一个类实现了Runnable接口,在run方法前面加synchronized和在run方法的一个方法加synchronized有什么区别?
问题如下:
第一种:
(run为重写方法)
class A{
public synchronized void run(){
m();
}
public void m(){
}
}
第二种:
(run为重写方法)
class A{
public void run(){
m();
}
public synchronized void m(){
}
}
在main方法中,创建两个A类对象,分别加到两个Thread中运行线程
为什么第一种方法都是一个线程在执行?(为什么线程一能一直拿到锁?)
而第二种是两个线程同时进行