Java:请教这段代码中 lock 的究竟是哪个对象
public class Solution {
public static void main(String[] args) {
Lock lock = new ReentrantLock();
Thread t1 = new Thread(()->{
try {
lock.lock();
System.out.println("线程一启动");
TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);
System.out.println("线程一结束");
} catch (InterruptedException e) {
System.out.println("线程一中断");
} finally {
lock.unlock();
}
});
Thread t2 = new Thread(()->{
try {
lock.lock();
System.out.println("线程二启动");
TimeUnit.SECONDS.sleep(5);
System.out.println("线程二启动");
} catch (InterruptedException e) {
System.out.println("线程二中断");
} finally {
lock.unlock();
}
});
t1.start();
t2.start();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
t2.interrupt();
}
}
程序输出结果仅有【线程一启动】,线程二不会被执行
请教在线程 t1 中的 lock.lock() 究竟是锁的哪个对象?没看到程序里有显式声明对象
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请教在线程 t1 中的 lock.lock() 究竟是锁的哪个对象?
这个不是吗?
lambda表达式可以访问调用者的局部变量。