亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java類內多個函數如何同步?

java類內多個函數如何同步?

JVM
慕萊塢森 2018-11-14 23:18:47
比如我定義了方法A和方法B,當實例化類后,多線程如何保證調用方法A時方法B即使被調用也不會被執行?Java有保證這種機制的關鍵字嗎?
查看完整描述

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{},寫起來比同步函數稍微難寫點.



查看完整回答
反對 回復 2018-12-12
  • 1 回答
  • 0 關注
  • 668 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號