Java 理解同步
我试图自学线程,但似乎无法使synchronized()正常工作。这就是我正在做的: 在类测试中,我声明了一个变量Java 理解同步,java,multithreading,runnable,Java,Multithreading,Runnable,我试图自学线程,但似乎无法使synchronized()正常工作。这就是我正在做的: 在类测试中,我声明了一个变量 static String toggy = "false"; 然后使用此run方法创建runnable(MyRunnable): @Override public void run() { synchronized (toggy) { System.out.println("toggy for " + name + " BEFORE = " + togg
static String toggy = "false";
然后使用此run方法创建runnable(MyRunnable):
@Override
public void run() {
synchronized (toggy) {
System.out.println("toggy for " + name + " BEFORE = " + toggy);
int b = 0;
for(int i=0; i<1000; i++) {
b++;
}
System.out.println("toggy for " + name + " AFTER = " + toggy);
System.out.println("--------------------------------------------\n");
if(toggy.equals("false")) {
toggy = "true";
} else if(toggy.equals("true")) {
toggy = "false";
}
}
}
@覆盖
公开募捐{
同步(toggy){
System.out.println(“toggy”表示“+name+”之前的“+toggy”);
int b=0;
对于(int i=0;i,通过向toggy
分配不同的值(String
实例),synchronized
块锁定不同的对象:
synchronized ("false")
{
}
或:
这将允许多个线程输入synchronized
要保护的块代码。请使用其他对象进行锁定:
static final Object lock = new Object();
synchronized (lock)
{
}
谢谢hmjd。我想我理解“toggy”的不同值的问题。但是为什么在“lock”上同步会起作用呢?所以,我可以在任何值不变的对象上同步?在具有有意义值的对象上同步什么时候正确?这里有更多讨论
synchronized ("true")
{
}
static final Object lock = new Object();
synchronized (lock)
{
}