问题描述
publicclassTTimplementsRunnable{intb=100;publicsynchronizedvoidm1()throwsException{b=1000;Thread.sleep(5000);System.out.println("b="+b);}publicvoidm2(){System.out.println(b);}问:当m1()方法在执行时,m2()方法会执行吗?为什么?
解决方案
解决方案二:
这段代码是不是少了一个“}”?还有实现Runnable接口时,你并沒有实现它的run()方法啊!
解决方案三:
上面是简单问题,主要考查线程锁问题,答案是会执行
解决方案四:
哦学习了
解决方案五:
执行什么啊?run方法没有main方法也没有
解决方案六:
引用2楼hhx158java的回复:
上面是简单问题,主要考查线程锁问题,答案是会执行
能不能说个理由出来·synchronizedvoidm1(),m1()已经被锁了啊
解决方案七:
synchronized是线程的同步,意思是这一块代码在同一时间只可以被一个线程去执行,其他线程想要去执行它的时候必须等待
解决方案八:
我猜楼主的意思是,当被同步的m1()方法被一个线程执行时,别的线程会不会执行m2(),当然可以,因为m2()没被同步,不会互斥。
解决方案九:
对于多个TT的对象,同一时刻只能有一个对象执行m1()方法,直到return
解决方案十:
在执行同步方法的时候还可以执行非同步方法的
解决方案十一:
这个问题看你如何去调用m1与m2方法,楼主所说的会执行的情况在尚学堂的视频中有讲到。但是如果是直接去调用m1再调用m2,m2一定会在m1解锁后才调用。不信的话楼主可以试试,在
时间: 2024-10-25 10:02:57