yield:
解释它之前,先简述下,多线程的执行流程:多个线程并发请求执行时,由cpu决定优先执行哪一个,即使通过thread.setPriority(),设置了
线程的优先级,也不一定就是每次都先执行它
yield,表示暂停当前线程,执行其他线程(包括自身线程) 由cpu决定
public class TestYield implements Runnable {
public void run() {
for (int i = 1; i <= 15; i++) {
System.out.println(Thread.currentThread().getName() + ": " + i);
// 暂停当前正在执行的线程对象,并执行其他线程,就是进入就绪状态
Thread.currentThread().yield();
// 可能还会执行 本线程,
}
}
public static void main(String[] args) {
TestYield runn = new TestYield();
Thread t1 = new Thread(runn);
Thread t2 = new Thread(runn);
Thread t3 = new Thread(runn);
t2.setPriority(t2.getPriority()+1);
t1.start();
t2.start();
t3.start();
}
}
join:
阻塞所在线程,等调用它的线程执行完毕,再向下执行
public static void main(String[] args) throws InterruptedException {
final Thread thread1 = new Thread() {
public void run() {
System.out.println("我是第一个");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我虽然睡了一会,但我是第二个");
};
};
thread1.start();
// thread1.join(); 在这阻塞主线程
Thread thread2 = new Thread() {
public void run() {
try {
thread1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}// 等待t1线程 执行完结,才继续向下执行 在这阻塞子线程
System.out.println("我是第三个");
};
};
thread2.start();
}
分享到:
相关推荐
在Java中,可以使用Thread类的yield()方法实现线程的礼让。 线程的合并是指一个线程等待另一个线程执行完毕后再继续执行。在Java中,可以使用Thread类的join()方法实现线程的合并。 线程的中断是指在一个线程中断另...
通过继承Thread类实现多线程 168 通过Runnable接口实现多线程 169 线程状态和sleep/yield/join/stop/destroy方法 170 新生状态 170 就绪状态 170 运行状态 170 死亡状态 170 终止线程的典型方法(重要!!!) 171 ...
学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...
java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。
257 13.4.2 准备状态 257 13.4.3 运行状态 257 13.4.4 等待/阻塞状态 258 13.4.5 死亡状态 258 13.5 线程的调度 258 13.5.1 睡眠方法 258 13.5.2 线程优先级 260 13.5.3 yield让步方法 261 13.5.4 join让步方法 262 ...
非流类(正确答案) java中用于创建文件对象的类是() [单选题] * A.File(正确答案) B.Object C.Thread D.Frame 若要将一个类对象能被整体写入文件,则定义该类时必须实现下列哪个接口() [单选题] * A....
本压缩包,总共包含两个文档,JAVA多线程编程详解-详细操作例子和 Java... 例如,runnable、thread、stop()、 suspend、yield、setPriority()、getPriority()、synchronized、wait()、join、线程池同步阻塞等方法的介绍
控制线程:join线程、后台线程、线程睡眠(sleep)、线程让步(yield)、改变线程优先级 同步代码块,同步方法synchronized 同步锁:ReentrantLock锁(具有重入性) 死锁 线程通信 线程池 2.网络编程 Java的基本网络支持:...
【基础】一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制? 30 【基础】Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口? 30 【基础】Java 中的final关键字有哪些用法?...
java线程分析android project例子,主要分析了sleep(),join(),yield()和wait()以及notify等方法以及需要注意的事项。
线程操作:isAlive()、isInterrupted()、join()、sleep()、stop()、interrupted()、setDaemon()、setPriority()、yield() 同步与死锁、Object类对线程的支持 泛型、通配符、受限泛型、泛型接口、泛型方法、泛型数字...
趣解Thread和Object类中线程相关方法:wait、notify、join、yield… 线程属性 线程异常处理 线程安全与程序性能的取舍之道 ... 3 环境参数 Maven 3.6+ JDK 8+ Tomcat 8.5+ MySQL 8.0.16+ Redis 6.0+ Intellij IDEA ...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
暂停线程执行 sleep_yield_join_stop3.线程的优先级问题4.多线程的安全性问题5.线程同步1.同步代码块2.同步方法 1.线程操作的常用方法 序号 方法名称 描述 1 static Thread currentThread() 返回目前正在执行...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................