黑马程序员技术交流社区

标题: 互斥锁和Synchronized的区别是什么? [打印本页]

作者: 1294668228    时间: 2016-3-29 16:40
标题: 互斥锁和Synchronized的区别是什么?
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 的区别是什么呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2