您的位置:首页 > 编程语言 > Java开发

java线程-同步-利用同步块同步

2017-03-03 00:00 323 查看
//同步块进行处理
package cn.mldn.demo;

class MyThread implements Runnable{
private int tickets = 5;

@Override
public void run() {
for (int i = 0; i < 20; i++) {
synchronized (this) { //同步块进行处理,同步块主要参数为当前变量
if (this.tickets > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "sell,tickets = " + this.tickets-- );
}
}
}
}

}

public class TestDemo{
public static void main(String[] args ) throws Exception{
MyThread mt = new MyThread();
new Thread(mt , "sellsA").start();
new Thread(mt , "sellsB").start();
new Thread(mt , "sellsC").start();
new Thread(mt , "sellsD").start();
}
}

//cmd输出:
//sellsAsell,tickets = 5
//sellsAsell,tickets = 4
//sellsDsell,tickets = 3
//sellsCsell,tickets = 2
//sellsBsell,tickets = 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: