我在同一個文件中有以下程序。我已經同步了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
誤解是你正在鎖定一個方法,而你有一個鎖定實例的方法。 –