Java多線程同步在語言應用中十分的關鍵我們在不斷的學習中就會注意到這一點下面我們就詳細的看看如何才能更好的進行Java多線程同步的應用下面的代碼會對你有所幫助
一個很重要的關鍵字就是線程同步synchronized下面的火車票的售票系統的模型同步分為同步塊和同步方法
class SellThread implements Runnable
{
int tickets=;
Object obj=new Object();
boolean b=false;
public void run()
{
if(b==false)
{
while(true)
sell();
}
else
{
while(true)
{
synchronized(obj)
{
try
{
Threadsleep();
}
catch(Exception e)
{
eprintStackTrace();
}
synchronized(this)
{
if(tickets>)
{
Systemoutprintln
(obj:+ThreadcurrentThread()getName()+
sell tickets:+tickets);
tickets;
}
}
}
}
}
}
public synchronized void sell()
{
synchronized(obj)
{
if(tickets>)
{
try
{
Threadsleep();
}
catch(Exception e)
{
eprintStackTrace();
}
Systemoutprintln(sell():+ThreadcurrentThread
()getName()+
sell tickets:+tickets);
tickets;
}
}
}
}
通過網上資料得知同步塊和同步方法其實本質是一樣的都是對對象枷鎖Java多線程同步中每個對象都有一個監視器鎖同步方法是利用this所代表的對象的鎖同步塊利用的是同步塊對象本身的鎖
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27371.html