黑马程序员技术交流社区

标题: Java练习(9):多线程安全问题-同步代码块 [打印本页]

作者: hoshan1    时间: 2015-11-14 00:42
标题: Java练习(9):多线程安全问题-同步代码块
演练代码:卖票程序class Ticket implements Runnable
{
       //定义票的张数
        private  int tick = 100;
      //定义一个对象,用于synchronized()
        Object obj = new Object();
      //复写接口的run()方法
        public void run()
        {
                while(true)
                {
                        synchronized(obj)
                        {
                                if(tick>0)
                                {
                                      //打印结果
                                        System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
                                }
                        }
                }
        }
}
class  Test7
{
        public static void main(String[] args)
        {
              //定义Ticket 的对象
                Ticket t = new Ticket();
             //定义四个线程
                Thread t1 = new Thread(t,"线程一");
                Thread t2 = new Thread(t,"线程二");
                Thread t3 = new Thread(t,"线程三");
                Thread t4 = new Thread(t,"线程四");
            //开启四个线程
                t1.start();
                t2.start();
                t3.start();
                t4.start();
        }
}

此代码中使用同步代码块解决了多线程的安全问题。但是多个线程需要判断锁,较为消耗资源





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