1 回答

TA貢獻1864條經驗 獲得超6個贊
1.用 synchronized 修飾方法
解決方案1:
public static void method0()
{
synchronized(類名.class)
{ //需要被同步的代碼
}
}
同一個類中的所有synchronized修飾的方法是不能同時調用的,也就是說同時只能調用其中一個方法,比如線程1調用A方法,在A方法執行完之前,線程2調用B方法,這個時候線程2就會阻塞,直到線程1調用完A方法后,線程2才開始執行B方法!
2.加一個同步對象鎖
就是加一個同步對象鎖
public class O
{
Object lock,在A方法執行完之前,線程2才開始執行B方法;
public void A()
{
synchronized(lock)
{
/:
public class O
{
public synchronized void A(){}
public synchronized void B(){}
}
同一個類中的所有synchronized修飾的方法是不能同時調用的;這里寫方法內容
}
}
public void B()
{}
synchronized(lock)
{}
/,線程2調用B方法,比如線程1調用A方法,也就是說同時只能調用其中一個方法,這個時候線程2就會阻塞;/,直到線程1調用完A方法后;/用 synchronized 修飾方法。
java多線程中.同步代碼塊和同步函數的區別:
同步代碼塊一般更好,只是同步函數,作用范圍大,效率低下.同步代碼塊效率高些,但是要求你將可能并發出syn{},寫起來比同步函數稍微難寫點.
- 1 回答
- 0 關注
- 668 瀏覽
添加回答
舉報