다음 파일이 동일한 파일에 있습니다. 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");
}
}
출력은 내 질문은 왜 "내 스레드 1"과 동시에 "내 스레드 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
입니까?
당신이 게시 한 코드를 적어도 하나의 구문이 오류가 있으며 그대로 읽을 수 없습니다. 실제 코드를 게시하고 읽을 수 있도록 형식을 지정하십시오. – Mat
오해는 인스턴스를 잠그는 대신에 메소드를 잠그고 있다는 것입니다. –