黑马程序员技术交流社区

标题: 同步代码块问题; [打印本页]

作者: 爱java爱生活    时间: 2015-6-4 18:46
标题: 同步代码块问题;
                /**
                同步代码块的问题-Synchronized(对象)解决
                是为了让线程运行时一个线程在运行时其他线程不参与进来

                */
class Ticket2 implements Runnable
{
                         private int num=100;
                         Object obj=new Object();
                        public void run()
                        {
                                                                for(int i=0;i<100;i++)
                                                                {
                                                                        synchronized(obj)//synchronized()同步代码块里面必须得有个对象,
                                                                                {
                                                                                                try
                                                                                                {
                                                                                                        Thread.sleep(10);
                                                                                                }catch(InterruptedException e) {}//让执行的这个线程短暫的休眠,醒来就會出現這個其他线程处理完数据,等到醒来的线程执行的时候共享数据num已经变了
                                                                                                if(num>0)
                                                                                                {
                                                                               
                                                                                                               System.out.println(Thread.currentThread().getName()+"......................................"+num--);
                                                                                                }
                                                                                }
                                                                }
                        }

}
public class Test2
                        {
               
                               
                                                public static void main(String[] args)
                                                        {
                                                                Ticket2 t=new Ticket2();
                                                                Thread t1=new Thread(t);//把线程任务封装在Ruannable 接口中,任务不变,只是创建多个Thread对象并把任务传进去,让Ruannable他们去卖;
                                                                Thread t2=new Thread(t);
                                                                Thread t3=new Thread(t);
                                                                Thread t4=new Thread(t);
                                                                t1.start();
                                                                t2.start();
                                                                t3.start();
                                                                t4.start();
                                                               
                                                        }
                       
                        }


作者: 李志鹏    时间: 2015-6-4 18:52
赞一个!





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