开发者

Is this thread safe?

I am writing an application for Android and am using worker threads to process certain information. Having read through my code I am now unsure if it is thread safe.

I have written a simplified version of my code, I have omitted the Handler object used to communicate with the main thread and obviously the process itself.

public class myClass implements Runnable
{
    private String myString;

    @Override
    public void run()
    {
        myString = "Some Value";
    }
}

This is called by running something similar to this.

myClass class = new myClass();
Thread thread = new Thread(class);
thread.start()

So, is this code not thread safe because I am mod开发者_C百科ifying myString (declared in the main thread) in the run() function?


In itself, that's thread-safe. But which threads are going to be reading the myString value? If you read it from the main thread after writing it in the new thread, that isn't thread-safe.


No, as you have presented it, it is thread safe. If you make a getter for the myString variable, you have a potential threading issue. In that case you would want to make the getter/setter method synchronized, or better yet make the variable volatile, which will ensure that the variable's value is the same for every thread.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜