Java高并发--等待线程结束和谦让
来源:互联网 发布:免费采购软件有哪些 编辑:程序博客网 时间:2024/06/06 04:28
针对本格专题我们主要讨论join()和yield()这两个方法。
一、等待线程结束
如果我们想要在一个线程中获取到另外一个线程的处理结果,那么 这个时候我们该怎么办呢?最好的方式当然就是等待另一个线程的结束后再来执行当前线程,这个时候就该我们的join()方法上场了。
注意:这个方法一共有两个重载方法,传入了时间参数的重载方法表示等待固定的时间,如果在等待的时间结束后等待的线程还没有执行完,这个时候就不管了,依然执行自己的线程。另外一个没有时间参数的就是无限制的等待下去。具体使用方法如下:
public class JoinAndYield { public volatile static int i = 0; public static class AddThread extends Thread{ @Override public void run(){ for(i=0;i<10000000;i++); } } public static void main(String[] args) throws InterruptedException { AddThread addThread = new AddThread(); addThread.start(); addThread.join(); System.out.printf("i = "+i); }}上面的代码的执行结果如下:
i = 10000000针对上面的执行结果,我们如果去掉join()方法这行代码,就会发现执行结果是i=0。因为这个结果并没有等待线程addThread执行完才执行,所以获取到的结果i没有是1000000。
二、谦让
在一个线程要结束或者结束的时候,如果它觉得自己不再需要cpu资源,这个时候就可以调用yield()方法来降低自己的优先级,从而可以把cpu资源让出给其他线程,但是这个时候并不意味之当前线程就不需要cpu资源了,只是它占用的资源的优先级的变低了。
阅读全文
1 0
- Java高并发--等待线程结束和谦让
- 《并发编程》--5.线程等待结束(join)和线程谦让(yield)
- java并发-主线程等待子线程结束
- java并发编程:主线程等待子线程结束 CountDownLatch
- Java高并发--等待通知和挂起继续执行
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- java 主线程等待子线程结束
- Java主线程等待子线程结束
- java 如何实现等待子线程结束
- Java高并发--- 进程和线程
- java线程高并发
- Java:主线程和子线程-----主线程等待子线程结束
- 等待指定线程结束
- 019:初等函数的连续性总结(四则及复合运算)
- 处理 a/b (mod m) 且 b | a 的求解
- 分治
- python爬虫由浅入深7--基于中国大学排名的定向爬虫
- 抓住现实,把握理想
- Java高并发--等待线程结束和谦让
- 太上感应篇0018
- 解决 webstrom sass 注释中文出错问题
- 前后端交互之解决跨域问题!!!!
- js对象深拷贝和淺拷贝
- Spring框架之事务处理
- [YZOJ]P3270-t1
- Git基础
- servlet获取相对路径 绝对路径