Tôi có chương trình sau trong cùng một tệp. Tôi đã đồng bộ hóa phương thức run().Tại sao phương thức đồng bộ cho phép nhiều luồng chạy đồng thời?
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");
}
}
ra là
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
Câu hỏi của tôi là tại sao được đồng bộ phương pháp cho phép cả "My Chủ đề 1" và "Chủ đề của tôi 4" chủ đề truy cập đồng thời?
Mã bạn gửi có ít nhất một cú pháp và thực sự khó đọc như vậy. Đảm bảo bạn đăng mã thực của mình và cố định dạng mã một cách rõ ràng. – Mat
Quan niệm sai lầm là bạn đang khóa một phương pháp, thay vào đó bạn có một phương pháp khóa ví dụ. –