标签:同步
/**
abc三个售票窗口,售50张票。
需求:可以做到同时销售,且不能卖重叠的,以及不能超过50
同步代码块
synchronized(对象){
同步代码块;
}
对象如同锁,持有锁的线程可以在同步中执行
没有持有锁的线程即使获得CPU的执行器,也无法执行。
同步前提:
1.多线程的代码块才需要同步,即run里的代码才需要加同步。对共享数据加同步
2.必须是多个线程使用同一个锁,才需要同步
好处:提高多线程的安全问题
弊端:多个线程需要判断锁,较为消耗资源
*/
class Tickt implements Runnable //extends Thread{
{
private int tickt=10000;
Object obj = new Object();
public void run(){
while(true){
synchronized(obj){
if(tickt>0){
//try{Thread.sleep(100);}catch(InterruptedException e){}
System.out.println(Thread.currentThread().getName()+"售票员卖出:"+ tickt-- +"号票");
}
}
}
}
}
class SaleTickt{
public static void main(String[]args){
Tickt a = new Tickt();
Thread t1 = new Thread(a);
Thread t2 = new Thread(a);
Thread t3 = new Thread(a);
Thread t4 = new Thread(a);
t1.start();
t2.start();
t3.start();
t4.start();
}
}标签:同步
原文地址:http://9274590.blog.51cto.com/9264590/1765358