java线程互斥实例
来源:互联网 发布:网络时时音频监 编辑:程序博客网 时间:2024/05/15 13:40
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package syndemo;
class MyThread implements Runnable{
if(target>0){
System.out.println("当前的进程"+Thread.currentThread().getName()+" 剩余票数:"+(target--));
}
for(int i=0;i<10;i++){
try{
Thread.sleep(500);
}catch(InterruptedException e){}
this.sul();
}
}
}
public class SynDemo{
public static void main (String[] args){
MyThread mt = new MyThread();
Thread t1 = new Thread(mt);
t1.setName("t1");
Thread t2 = new Thread(mt);
t2.setName("t2");
t1.start();
t2.start();
}
}
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package syndemo;
class MyThread implements Runnable{
private int target=10;
//不加synchronized时
、 /*结果:
当前的进程t2 剩余票数:9
当前的进程t1 剩余票数:10
当前的进程t2 剩余票数:8
当前的进程t1 剩余票数:7
当前的进程t2 剩余票数:6
当前的进程t1 剩余票数:5
当前的进程t2 剩余票数:4
当前的进程t1 剩余票数:3
当前的进程t2 剩余票数:2
当前的进程t1 剩余票数:1
*/
public synchronized void sul(){if(target>0){
System.out.println("当前的进程"+Thread.currentThread().getName()+" 剩余票数:"+(target--));
}
}
public void run(){for(int i=0;i<10;i++){
try{
Thread.sleep(500);
}catch(InterruptedException e){}
this.sul();
}
}
}
public class SynDemo{
public static void main (String[] args){
MyThread mt = new MyThread();
Thread t1 = new Thread(mt);
t1.setName("t1");
Thread t2 = new Thread(mt);
t2.setName("t2");
t1.start();
t2.start();
}
}
- java线程互斥实例
- 线程互斥实例----火车票
- Java 线程互斥
- Java 线程互斥
- java多线程关于线程互斥实现实例
- java基础:线程互斥
- JAVA线程互斥问题
- Java线程的互斥
- Java线程的互斥
- 传统线程互斥技术 ------ 实例
- Java线程互斥(三)
- java线程同步和互斥
- Java中的线程互斥问题
- java 线程同步与互斥
- java资源竞争问题(线程互斥)
- java多线程(二)线程的互斥
- java线程间的互斥
- java 线程同步互斥和生命周期
- CSS3实现漂亮Menu菜单代码
- CSS3实现多种Action:hovert效果
- RTP/RTCP
- linux下vim命令详解
- 跨域数据交换与跨域的jsession问题
- java线程互斥实例
- 比较2个list值是否相等的方法
- ASP.NET MVC 的分页
- 在Action中获取servlet API(1)
- MVCFckeditor的小问题
- 最简单的 Git 使用流程
- linux 笔记1
- u-boot 配置文件
- CSS3绘制的奥运五环