public class 多线程火车票
{
public static void main(String[] args)
{
new Tickets().start();
new Tickets().start();
new Tickets().start();
new Tickets().start();
}
}
class Tickets extends Thread
{
private static int ticket=100;
//ReentrantLock r = new ReentrantLock();
public void run()
{
while(true)
{
//r.lock();
synchronized("a"){
if(ticket==0)
{
break;
}
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println(this.getName()+":" +ticket--);
//r.unlock();
}
}
}
}
——————————————————————————
public class 多线程火车票
{
public static void main(String[] args)
{
new Tickets().start();
new Tickets().start();
new Tickets().start();
new Tickets().start();
}
}
class Tickets extends Thread
{
private static int ticket=100;
ReentrantLock r = new ReentrantLock();
public void run()
{
while(true)
{
r.lock();
if(ticket==0)
{
break;
}
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.getName()+":" +ticket--);
r.unlock();
}
}
}
多线程模拟火车站卖票,第二种方式出现负数,请问互斥锁必须两个以上才有意义吗,互斥锁和synchronized 的区别是什么呢 |
|