[英]Is this thread safe?
我正在為Android編寫應用程序,並且正在使用工作線程來處理某些信息。 閱讀完我的代碼后,現在不確定它是否是線程安全的。
我已經編寫了代碼的簡化版本,省略了用於與主線程通信的Handler
對象,並且顯然省略了進程本身。
public class myClass implements Runnable
{
private String myString;
@Override
public void run()
{
myString = "Some Value";
}
}
通過運行與此類似的操作來調用它。
myClass class = new myClass();
Thread thread = new Thread(class);
thread.start()
那么,此代碼不是線程安全的,因為我正在run()
函數中修改myString
(在主線程中聲明run()
嗎?
就其本身而言,這是線程安全的。 但是,哪些線程將讀取 myString
值? 如果您在將新線程寫入新線程后從主線程讀取它,則該線程不是安全的。
不,正如您介紹的那樣,它是線程安全的。 如果為myString變量獲取吸氣劑,則可能存在線程問題。 在這種情況下,您可能希望使getter / setter方法同步,或者更好地使變量可變,這將確保每個線程的變量值都相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.