public class Runnable01 implements Runnable{
private int ticketsCont=50;
private Lock lock=new ReentrantLock();
public Runnable01() {
// TODO Auto-generated constructor stub
}
public void run(){
while(true){
lock.lock();
if (ticketsCont>0) {
ticketsCont--;
System.out.println(Thread.currentThread().getName()+"卖了1张,剩余为:"+ticketsCont);
}
lock.unlock();
if (ticketsCont==0) {
break;
}
}
}
public static void main(String[] args) throws InterruptedException {
Runnable01 mt=new Runnable01();
Thread th1=new Thread(mt,"窗口1");
Thread th2=new Thread(mt,"窗口2");
Thread th3=new Thread(mt,"窗口3");
th1.start();
th2.start();
th3.start();
}
}
重复了几次,都是产生这种结果,不应该是1,2,3窗口都有么?:
窗口1卖了1张,剩余为:49
窗口1卖了1张,剩余为:48
窗口1卖了1张,剩余为:47
窗口1卖了1张,剩余为:46
窗口1卖了1张,剩余为:45
窗口1卖了1张,剩余为:44
窗口1卖了1张,剩余为:43
窗口1卖了1张,剩余为:42
窗口1卖了1张,剩余为:41
窗口1卖了1张,剩余为:40
窗口1卖了1张,剩余为:39
窗口1卖了1张,剩余为:38
窗口1卖了1张,剩余为:37
窗口1卖了1张,剩余为:36
窗口1卖了1张,剩余为:35
窗口1卖了1张,剩余为:34
窗口1卖了1张,剩余为:33
窗口1卖了1张,剩余为:32
窗口1卖了1张,剩余为:31
窗口1卖了1张,剩余为:30
窗口1卖了1张,剩余为:29
窗口1卖了1张,剩余为:28
窗口1卖了1张,剩余为:27
窗口1卖了1张,剩余为:26
窗口1卖了1张,剩余为:25
窗口1卖了1张,剩余为:24
窗口1卖了1张,剩余为:23
窗口1卖了1张,剩余为:22
窗口1卖了1张,剩余为:21
窗口1卖了1张,剩余为:20
窗口1卖了1张,剩余为:19
窗口1卖了1张,剩余为:18
窗口1卖了1张,剩余为:17
窗口1卖了1张,剩余为:16
窗口1卖了1张,剩余为:15
窗口1卖了1张,剩余为:14
窗口1卖了1张,剩余为:13
窗口1卖了1张,剩余为:12
窗口1卖了1张,剩余为:11
窗口1卖了1张,剩余为:10
窗口1卖了1张,剩余为:9
窗口1卖了1张,剩余为:8
窗口1卖了1张,剩余为:7
窗口1卖了1张,剩余为:6
窗口1卖了1张,剩余为:5
窗口1卖了1张,剩余为:4
窗口1卖了1张,剩余为:3
窗口1卖了1张,剩余为:2
窗口1卖了1张,剩余为:1
窗口1卖了1张,剩余为:0
按照自己的节奏前行
慕粉1529473653
相关分类