簡體   English   中英

這個線程安全嗎?

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

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