java的锁有对象锁和类锁两种,但不同的锁在不同的场景下是不同的,区别在于
1.对于普通同步方法,锁是当前实例对象(this)。
2.对于静态同步方法,锁是当前类的Class对象。
3.对于同步方法块,锁是Synchonized括号里配置的对象
讨论到java的八锁问题,我们一般讨论的是java锁住了类还是对象,或者或者是静态方法块
同步方法块之间的讨论
package day2.八锁问题;
import org.junit.Test;
import java.util.concurrent.TimeUnit;
public class test {
@Test
public void test1() throws InterruptedException {
Eat eat=new Eat();
new Thread(()->{
try {
TimeUnit.SECONDS.sleep(1);
eat.eat_meat("1");
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
new Thread(()->{
try {
TimeUnit.SECONDS.sleep(1);
eat.eat_rice("2");
} catch (Exception e) {
e.printStackTrace();
}
}).start();
Eat eat2=new Eat();
eat2.eat_meat("3");
eat2.eat_rice("4");
TimeUnit.SECONDS.sleep(