解决线程安全的方法(方式三)-Lock
class Window implements Runnable{
private int ticket
= 100;
private ReentrantLock lock
= new ReentrantLock();
@Override
public void run() {
while (true){
try{
lock
.lock();
if (ticket
> 0){
try {
Thread
.sleep(100);
} catch (InterruptedException e
) {
e
.printStackTrace();
}
System
.out
.println(Thread
.currentThread().getName()+" 卖票: "+ ticket
);
ticket
--;
}else {
break;
}
}finally{
lock
.unlock();
}
}
}
}
public class LockTest {
public static void main(String
[] args
) {
Window w1
= new Window();
Thread t1
= new Thread(w1
);
Thread t2
= new Thread(w1
);
Thread t3
= new Thread(w1
);
t1
.setName("线程1");
t2
.setName("线程2");
t3
.setName("线程3");
t1
.start();
t2
.start();
t3
.start();
}
}
转载请注明原文地址:https://blackberry.8miu.com/read-41779.html