public synchronized void useTool(String workerName) throws InterruptedException
2)将需要同步的临界区代码放入synchronized(this){}中,如下所示。
synchronized(this)
{
t1Owner = workerName;
Thread.sleep(100);
t2Owner = workerName;
Thread.sleep(100);
checkTool();
} www.2cto.com
使用synchronized同步后,重新执行原主函数,得到正确执行结果。
*Right*: Tool1:Tom Tool2:Tom
*Right*: Tool1:Bob Tool2:Bob
*Right*: Tool1:Jack Tool2:Jack
*Right*: Tool1:Bob Tool2:Bob
*Right*: Tool1:Jack Tool2:Jack
*Right*: Tool1:Tom Tool2:Tom
*Right*: Tool1:Bob Tool2:Bob
*Right*: Tool1:Jack Tool2:Jack
*Right*: Tool1:Tom Tool2:Tom
*Right*: Tool1:Bob Tool2:Bob
*Right*: Tool1:Jack Tool2:Jack
*Right*: Tool1:Tom Tool2:Tom
*Right*: Tool1:Bob Tool2:Bob
*Right*: Tool1:Jack Tool2:Jack
*Right*: Tool1:Tom Tool2:Tom
作者:zephiruswt