不多说 先送上金币 嘿嘿
问题:在没有同步的情形下,既然线程会执行判断if语句后 在执行到打印语句前 有可能处于冻结状态,并导致安全问题 那么有没有可能出现这种情况:在加上同步代码块后,线程1进入同步代码块后 并在if判断之前,忘记“关门”,而让其他线程2
进来,导致安全问题呢??因为关门的动作也也是一个执行步骤,应该也存在和没有同步之前一样的问题呀?
为什么彼能出问题,而此类似的问题就不会出呢??
class Ticket implements Runnable
{
private int tick = 1000;//tick是共享数据
Object obj = new Object();
public void run()
{
while(true)
{
synchronized(obj)
{---------------------------》一进来 就挂住在这 并且没有“关门” ,有没有可能 为什么呢?
if(tick>0)
{
//try{Thread.sleep(10);}catch(Exception e){}
System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
}
}
}
}
}
|