一、Java锁的位置 在堆内存上,而不是在栈内存上
package com.concurrent.day17;
import java.util.concurrent.TimeUnit;
/**
* 锁是所在堆内存上,而不是栈内存上。
* @author lzwen10
* @version 1.0
* @date 2019/12/26/0026 22:17
*/
public class T {
Object o = new Object();
void m(){
synchronized (o){
while (true){
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
}
public static void main(String[] args) {
T t = new T();
//启动第一个线程
new Thread(t::m,"t1").start();
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
//启动第二个线程
Thread t2 = new Thread(t::m,"t2");
t.o = new Object();
t2.start();
}
}