今天回顾了Java的线程的一些知识

例1:下面代码存有详细的解释 主要是继承Thread类与实现Runnable接口 以及start()和run()方法

package com.date0607;

/**
* 在一个程序中同时运行的多个独立流程,每一个独立流程就是一个线程。
* 线程开发两种方式:继承Thread类与实现Runnable接口.
* start() 执行是无序的,不固定的。run() 执行有先后顺序。
* 继承Thread是面向对象的编程方式。
* 实现Runnable接口解决了单一继承限制
*/
class MyThread1 extends Thread{
public void run() {
for (int i = 1; i <= 5; i++){
System.out.println(i + " $$$");
}
}
}
class MyThread2 extends Thread{
public void run(){
for (int i = 1; i <= 5; i++){
System.out.println(i + " ###");
}
}
} class MyRunnable2 implements Runnable{
public void run(){
for (int i = 1; i <= 5; i++){
System.out.println(i + " @@@");
}
} }
public class Test_0607_Demo01 {
public static void main(String [] args){
Thread t1 = new MyThread1();
Thread t2 = new MyThread2();
Runnable target = new MyRunnable2();
Thread t3 = new Thread(target);
//初始状态
//t1.start();
//t2.start();
//运行状态
t1.run();
t2.run();
t3.run();
}
}
运行结果 自己执行试试哦
例2 sleep()方法,1000是1秒
package com.date0607;

/**
* sleep()可以控制下线程,但是不准备。
* sleep(1000) 1000指1s。
*/ class MyThread3 extends Thread{
public void run(){
for (int i = 1; i <= 5; i++){
System.out.println(i + " ###");
}
try{
Thread.sleep(20000);
}catch (InterruptedException e){}
}
} class MyRunnable3 implements Runnable{
public void run(){
for (int i = 1; i <= 5; i++){
System.out.println(i + " @@@");
}
try{
Thread.sleep(20000);
}catch (InterruptedException e){}
} }
public class Test_0607_Demo02{
public static void main(String [] args){
Thread t2 = new MyThread3();
Runnable target = new MyRunnable3();
Thread t3 = new Thread(target);
t2.run();
t3.run();
}
}
运行结果 等待20秒,执行下一个线程

例3 join()的使用方法

package com.date0607;

/**
*join方法也会导致阻塞。
* 特点:如果当前线程中掉用了另外一个线程的join方法,当前线程会立即阻塞,直到另外一个线程执行完成。
*/ class MyThread33 extends Thread{
public void run(){
for (int i = 1; i <= 5; i++){
System.out.println(i + " ###");
}
}
} class MyThread44 extends Thread{
Thread t;
public void run(){
try{
t.join();
}catch (InterruptedException e){}
for (int i = 1; i <= 5; i++){
System.out.println(i + " @@@");
}
} }
public class Test_0607_Demo03{
public static void main(String [] args){
MyThread33 t1 = new MyThread33();
MyThread44 t2 = new MyThread44( );
t2.t= t1;
t1.start();
t2.start();
}
}
运行结果
 
 
												

线程的使用方法start run sleep join的更多相关文章

  1. Thread的中断机制(interrupt),循环线程停止的方法

    一.中断原理 中断线程 线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个 ...

  2. 线程的状态有哪些,线程中的start与run方法的区别

    线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法. ...

  3. python的threading.Thread线程的start、run、join、setDaemon

    Pycharm整体看下Thread类的内容:模拟的是Java的线程模型 表示方法method,上面的锁头表示这个是类内部的方法,从方法名字命名规范可以看出,都是_和__开头的,一个下划线表示是子类可以 ...

  4. 线程sleep,wait,notify,join,yield方法解析

    线程的五种状态 线程从创建到销毁一般分为五种状态,如下图: 1) 新建 当用new关键字创建一个线程时,就是新建状态. 2) 就绪 调用了 start 方法之后,线程就进入了就绪阶段.此时,线程不会立 ...

  5. Java中run(), start(), join(), wait(), yield(), sleep()的使用

    run(), start(), join(), yield(), sleep() 这些是多线程中常用到的方法. run(): 每个Thread中需要实现的方法, 如果直接调用的话, 会是和单线程一样的 ...

  6. 【java线程】的wait、sleep、join、yied

    1.概述 使用Thread相对来说比较简单,没有什么成本,但是通常来说,我们使用线程基本就是覆写run方法,然后调用线程对象的start函数启动线程. 对于面试人员来说,这些都不是面试官会问到的问题, ...

  7. Java 如何实现线程间通信?(notify、join、CountdownLatch、CyclicBarrier、FutureTask、Callable )

    转自:https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247486499&idx=1&sn=d3f2d6959df ...

  8. Java多线程中run(), start(), join(), wait(), yield(), sleep()的使用

    Run 每个Thread中需要实现的方法, 如果直接调用的话, 会是和单线程一样的效果, 要另起线程需要使用start(). start 新起线程调用run(). 主线程不等待直接往下执行 Yield ...

  9. Java多线程 线程状态及转换 wait sleep yield join

    线程的状态转化关系(1). 新建状态(New):新创建了一个线程对象.(2). 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...

随机推荐

  1. bzoj5047: 空间传送装置

    Description 太空中一共有n座星球,它们之间可以通过空间传送装置进行转移.空间传送装置分为m种,第i种装置可以用4个参 数a_i,b_i,c_i,d_i来描述.因为时空抖动的问题,在非整数时 ...

  2. 5.IAP - FLASH

    一.Flash与时钟系统的关系            STM32系统时钟:                 HSE 高速外部时钟,电路上焊接的外部时钟,一般是4Mhz-16Mhz,板子上的是8Mhz ...

  3. (整理)EF分页的实现

    最近做一个小功能,需要数据分页,因为小框架使用的是EF,因此查询了一下EF的分页. EF分页主要用到了skip和take两个方法: GetListBy(lamda xxxxx).skip(PageSi ...

  4. Angularjs启动入口, splash画面,与加快启动的技巧

    Angularjs启动入口, splash画面,与加快启动的技巧 Angularjs启动入口 * 自动响应DOMContentLoaded event * 从ngApp指定的入口启动: 在angula ...

  5. python3之os、sys

    os模块 # 显示当前使用平台:"nt":windows;"posix":Linux >>> os.name 'nt' # 当前工作目录 &g ...

  6. 性能测试day03_前端分析调优思路

    刚刚看到有人支持我写的博客,表示还是比较感动的,发现热心的用户在我的博客留言说“一个系统每天有200万在线用户,问我怎么设计性能场景?”,其实这个问题呢就属于业务没理清,这个问题就像我问你,一个城市一 ...

  7. attr 和 prop 的区别

    在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: ...

  8. 【学习】数据处理基础知识(基本功能)【pandas】

    本章介绍pandas的重要功能,只记录一些重点内容 1.重新索引 pandas对象的一个重要方法是reindex,其作用是创建一个适应用新索引的新对象 #重新索引 obj = pd.Series([4 ...

  9. Timestamp 数据类型四舍五入引起的神奇bug

    神奇bug, Timestamp 会四舍五入也会引起 bug .. String UUID = java.util.UUID.randomUUID().toString(); long time = ...

  10. 编程语言分类,安装python解释器,变量

    1.编程语言分类 机器语言:直接使用二进制指令去编写程序,直接操作硬件 优点:执行效率高 缺点:开发效率低 汇编语言:用英文标签取代二进制指令去编写程序,直接进操作硬件 优点:开发效率高于机器语言 缺 ...