本帖最后由 杜光 于 2013-7-27 14:53 编辑
package ThreadDemo;
class Sale implements Runnable
{
private int tick = 100;
boolean flog = true;
public void run()
{
if (flog)
{
//线程一执行
while(true)
{
//如果对象为obj,则是两个锁,是不安全的;换成this,为一个锁,会安全很多
synchronized(this)
{
if (tick > 0)
{ try{Thread.sleep(10);}catch(Exception e){}
System.out.println(Thread.currentThread().getName() + "--code--:" + tick--);
}
}
}
}
//线程二执行
else
while(true)
show();
}
public synchronized void show()
{
if (tick > 0)
{
try{Thread.sleep(10);}catch(Exception e){}
System.out.println(Thread.currentThread().getName() + "----show-----:" + tick--);
}
}
}
class ThreadDemo4
{
public static void main(String[] args)
{
Sale t = new Sale();
Thread t1 = new Thread(t);//创建一个线程
Thread t2 = new Thread(t);//创建一个线程
t1.start();
try{Thread.sleep(10);}catch(Exception e){}//关闭主线程,运行t1
t.flog = false;//开启线程一,即关闭if,让线程二执行else中语句
t2.start();
}
}
就是红色 部分,如果把{}去掉,怎么解释?
|