/**
同步代码块的问题-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();
}
}
|
|