public class TT implements Runnable {
int b=100;

public synchronized void m1()throws Exception{
b=1000;
Thread.sleep(5000);
System.out.println("b="+b);

}
public void m2(){
System.out.println(b);
}
问:当m1()方法在执行时,m2()方法会执行吗?为什么?

解决方案 »

  1.   

    这段代码是不是少了一个 “}”?
    还有 实现Runnable接口时,你并沒有实现它的run()方法啊!
      

  2.   

    执行什么啊?   run方法没有    main方法也没有   
      

  3.   


    能不能说个理由出来·synchronized void m1() ,m1()已经被锁了啊
      

  4.   

    synchronized  是线程的同步, 意思是这一块代码在同一时间只可以被一个线程去执行,其他线程想要去执行它的时候必须等待
      

  5.   

    我猜楼主的意思是,当被同步的m1()方法被一个线程执行时,别的线程会不会执行m2(),当然可以,因为m2()没被同步,不会互斥。
      

  6.   

    对于多个TT的对象,同一时刻只能有一个对象执行m1()方法,直到return
      

  7.   

    这个问题看你如何去调用m1与m2方法,楼主所说的会执行的情况在尚学堂的视频中有讲到。
    但是如果是直接去调用m1再调用m2,m2一定会在m1解锁后才调用。不信的话楼主可以试试,在