[英]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.