解决多线程安全问题
Lock锁解决多线程安全问题
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class RunnableImpl implements Runnable {
//定义一个多线程的票源
private int piao=100;
//创建一个Lock锁对象
Lock l=new ReentrantLock();
//重写接口中的run方法
@Override
public void run() {
while(true){
l.lock();
if(piao>0){
System.out.println(Thread.currentThread().getName()+"正在卖"+piao+"张票");
piao--;
}
l.unlock();
}
}
}
public class UseTicket {
public static void main(String[] args) {
//创建一个接口的实现类对象
dem15.RunnableImpl run=new RunnableImpl();
//创建多个线程
Thread t0=new Thread(run);
Thread t1=new Thread(run);
Thread t2=new Thread(run);
t0.start();
t1.start();
t2.start();
}
}