我到处都读过,如果一个字段由不同的线程同时使用,则需要某种同步,如果只有一个线程使用它,则不需要它.但是,如果它被不同的线程使用,但不能同时使用呢?我们来看一下这样的代码:
Thing thing = new Thing();
Thread t1 = new Thread(new MyRunnable(thing));
Thread t2 = new Thread(new MyRunnable(thing));
t1.start();
t1.join();//Wait for t1 to finish
t2.start();
Run Code Online (Sandbox Code Playgroud)
MyRunnable是:
class MyRunnable implements Runnable {
//skipped constructor and field "private final Thing thing"
public void run() {
thing.someUpdate();
}
}
Run Code Online (Sandbox Code Playgroud)
安全吗?是否t1可以看到t1所做的所有更新?