线程交替输出
来源:互联网 发布:唐山关键字优化公司 编辑:程序博客网 时间:2024/06/05 07:25
启动三个线程打印递增数字,线程1先打印1,2,3,4,5 然后是线程2打印6,7,8,9,10然后是线程3打印出11,12,13,14,15.接着在由线程1打印16,17,18,19,20.以此类推打印到75.代码如下:
package com.test;public class MyFirstThread { private static CommonObj lock; public static void main (String[] args){ lock =new CommonObj(0,1); Thread thread1 = new Thread(new FirstRunnable(lock,1,2),"线程1"); Thread thread2 = new Thread(new FirstRunnable(lock,2,3),"线程2"); Thread thread3 = new Thread(new FirstRunnable(lock,3,1),"线程3"); thread1.start(); thread2.start(); thread3.start(); }}package com.test;public class CommonObj { private int n; private int status; public CommonObj(int n ,int status){ this.n = n; this.status = status; } public int getN() { return n; } public void setN(int n) { this.n = n; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public int addN(int no){ return n=n+no; }}package com.test;public class FirstRunnable implements Runnable { private CommonObj lock ; private int currentStatuc; private int nextStatus; public FirstRunnable (CommonObj lock,int currentStatuc,int nextStatus){ this.lock = lock; this.currentStatuc = currentStatuc; this.nextStatus = nextStatus; } @Override public void run() { for(int j=0;j<5;j++){ synchronized (lock){ while(lock.getStatus()!=currentStatuc){ try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } lock.setStatus(nextStatus); for(int i=0;i<5;i++){ System.out.println(Thread.currentThread().getName()+"now Number : "+lock.addN(1)+" currentStatuc "+currentStatuc+" nextStatus "+nextStatus); } lock.notifyAll(); System.out.println(" lock.getStatus "+lock.getStatus()); } } } public CommonObj getLock() { return lock; } public void setLock(CommonObj lock) { this.lock = lock; } public int getNextStatus() { return nextStatus; } public void setNextStatus(int nextStatus) { this.nextStatus = nextStatus; }}
0 0
- java 线程 交替输出
- 线程交替输出
- 线程交替输出
- N个线程交替执行,输出ABCD...
- 交替输出
- 面试题之开两个线程交替输出数字
- 线程之(wait,notify)---交替输出数
- Java,三条线程依次交替输出十次ABC
- 线程同步知识点+案例(子线程父线程交替执行,输出10遍我爱你)
- Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数
- Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数(方法一)
- Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数(方法二)
- 交替输出ABAB
- 多线程交替输出数据
- 两个线程交替执行
- 线程交替打印
- 线程实现交替任务
- 两个线程交替执行
- chrome 快捷键
- android studio 安装注入插件
- Tsql查询执行顺序(二)
- Authentication Patterns ----认证模式
- memcache实现网站公用计数器
- 线程交替输出
- Sharding Scenario
- 四种方案解决ScrollView嵌套ListView问题
- jQuery 文本值改变的事件绑定
- Sicily 7766. Dark roads
- C++按一定格式输出到控制台,或者文件中
- c和c++的一些训练题(8)(打印心形)
- ORACLE函数大全
- 映射静态资源