簡體   English   中英

如果我從我的synchronized方法調用非同步方法是非同步方法線程安全嗎?

[英]if i call a non synchronized method from my synchronized method is non synchronized method thread safe?

我從同步方法中調用noonsynchronized方法是否是線程安全的?

我有兩種方法如下:

public class MyClass{

 void synchronized doSomething1(){

   doSomething2();
  }

void doSomething2(){
 //will this block of code be synchronized if called only from doSomething1??
 }

}

如果doSomething2()只從所謂doSomething1()那么它只會通過單一實例的單個線程調用MyClass 它仍然可以通過不同的實例同時從不同的線程調用 - 所以如果它作用於任何可能不是特定於MyClass實例的共享數據,它仍然不能保證修復所有線程問題。

基本上,您需要仔細考慮多個線程使用的任何可變共享狀態 - 如果您需要可變共享狀態,則沒有簡單的修復方法。 在您的特定情況下,您還需要確保 doSomething2()僅從doSomething1()調用 - 這意味着將其作為私有開始...

Thread on the of the of MyClass . 當調用doSomething1() Thread MyClass 上。 在該線程的執行退出doSomething1 ,鎖定將保留,如果它進入doSomething2則包括。 這將導致其他線程在嘗試鎖定時阻塞。

請記住: synchronized不是線程安全的。

更多信息:

如果doSomething2()僅僅是從所謂的doSomething1()則是-它是線程安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM