多线程和并发库应用四-传统线程通信
2018-01-06 17:26
363 查看
本节通过一个案例来实现线程之间的通信。
现在有一个需求需要子线程循环10次,主线程循环100次,子线程循环10次,主线程循环100次,依次往复50次。。。。
用一个标识量来标识当前是谁在运行bShouldSub
当不是当前线程运行时等待当前线程运行结束后唤醒并改变标志量
启动两个线程调用即可
文章地址:http://www.haha174.top/article/details/254220
项目源码:https://github.com/haha174/thread-learning.git
现在有一个需求需要子线程循环10次,主线程循环100次,子线程循环10次,主线程循环100次,依次往复50次。。。。
public class Business { private boolean bShouldSub=true; public synchronized void sub(int i){ while (!bShouldSub){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } for (int j=1;j<=10;j++){ System.out.println("sub sequece "+i+" loop for "+j); } bShouldSub=false; this.notify(); } public synchronized void main(int i){ while (bShouldSub){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } for (int j=1;j<=100;j++){ System.out.println("main sequece "+i+" loop for "+j); } bShouldSub=true; this.notify(); } }
用一个标识量来标识当前是谁在运行bShouldSub
当不是当前线程运行时等待当前线程运行结束后唤醒并改变标志量
public class Main { public static void main(String[] args){ final Business bs=new Business(); new Thread(new Runnable() { public void run() { for (int i=1;i<=50;i++){ bs.sub(i); } } }).start(); new Thread(new Runnable() { public void run() { for (int i=1;i<=50;i++){ bs.main(i); } } }).start(); } }
启动两个线程调用即可
文章地址:http://www.haha174.top/article/details/254220
项目源码:https://github.com/haha174/thread-learning.git
相关文章推荐
- Java多线程与并发应用-(3)-传统线程通信技术及生产者消费者模式
- Java多线程与并发应用-(4)-传统线程通信技术试题
- 多线程和并发库应用一传统线程创建
- 多线程并发库高级应用 之 传统定时器、互斥、同步通信技术
- 多线程并发库高级应用 之 传统定时器、互斥、同步通信技术
- Java多线程与并发库高级应用-传统线程机制回顾
- 多线程并发库高级应用 之 传统定时器、互斥、同步通信技术
- 多线程并发库高级应用 之 传统定时器、互斥、同步通信技术
- Java多线程与并发库高级应用-传统线程同步通信技术
- 多线程并发库高级应用 之 线程范围内共享数据
- 多线程并发库高级应用 之 java5中的线程并发库--线程池、Callable&Future
- (13)多线程与并发库之java5阻塞队列(BlockingQueue)的应用----子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
- java多线程之线程并发库阻塞队列的应用
- 黑马程序员——Java多线程与线程并发库高级应用笔记
- Java多线程与并发库高级应用-java5线程并发库
- 多线程并发库高级应用 之 线程范围内共享数据
- 传统多线程工具与线程并发库比较分析
- 09_张孝祥_多线程_java5线程并发库的应用_线程池
- java多线程与高并发库应用(二)线程创建和定时任务Timer