我在同一个文件中有以下程序。我已经同步了run()方法。为什么同步方法允许多个线程同时运行?
class MyThread2 implements Runnable {
Thread t;
MyThread2(String s) {
t=new Thread(this,s);
t.start();
}
public synchronized void run() {
for (int i=0;i<3;i++) {
System.out.println("Thread name : "+ Thread.currentThread).getName());
try {
t.sleep(1000);
}
catch (InterruptedException e) {
e.getMessage();
}
}
}
}
class TestSync {
public static void main(String[] args) {
MyThread2 m1=new MyThread2("My Thread 1");
c.fun();
}
}
class c {
static void fun() {
MyThread2 m1=new MyThread2("My Thread 4");
}
}
输出
Thread name : My Thread 1
Thread name : My Thread 4
Thread name : My Thread 4
Thread name : My Thread 1
Thread name : My Thread 1
Thread name : My Thread 4
我的问题是,为什么是同步的方法,同时允许“我的线程1”和“我的主题4”线程同时访问?
您发布的代码至少有一个语法错误,而且很难按原样阅读。确保你发布你的实际代码,并尝试格式化它的清晰。 – Mat
误解是你正在锁定一个方法,而你有一个锁定实例的方法。 –