java 死锁
来源:互联网 发布:搜狐 网络大电影 编辑:程序博客网 时间:2024/06/16 06:32
示例代码:
package main;public class Main {// 死锁案例public static void main(String[] args) {Thread t1 = new Thread(new StudentA());Thread t2 = new Thread(new StudentB());t1.start();t2.start();}static Object N = new Object();// N锁static Object P = new Object();// P锁static class StudentA implements Runnable {@Overridepublic void run() {synchronized (N) {System.out.println(Thread.currentThread().getName() + "获得N锁");try {Thread.sleep(1000);// 睡眠一秒 ,保证两个线程同步执行(并发),否则线程启动有差异影响测试结果} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "想要获得P锁,才释放N锁");synchronized (P) {System.out.println(Thread.currentThread().getName() + "获得P锁");}System.out.println(Thread.currentThread().getName() + "释放P锁");}System.out.println(Thread.currentThread().getName() + "释放N锁");}}static class StudentB implements Runnable {@Overridepublic void run() {synchronized (P) {System.out.println(Thread.currentThread().getName() + "获得P锁");try {Thread.sleep(1000);// 睡眠一秒 ,保证两个线程同步执行(并发)} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "想要获得N锁,才释放P锁");synchronized (N) {System.out.println(Thread.currentThread().getName() + "获得N锁");}System.out.println(Thread.currentThread().getName() + "释放N锁");}System.out.println(Thread.currentThread().getName() + "释放P锁");}}}
截图:
阅读全文
0 0
- java死锁,避免死锁
- Java.死锁
- Java死锁
- java死锁
- java ----死锁
- Java死锁
- java 死锁
- Java - 死锁
- java 死锁
- JAVA 死锁
- java死锁
- java死锁
- Java死锁
- Java - 死锁
- Java 死锁
- java 死锁
- java死锁
- Java死锁
- 单例设计模式
- 【Deep Learning】笔记:Tips for deep learning
- ios Xcode代码段设置,迁移
- windowX64 vs2012环境下静态链接编译32位libcurl 支持openssl
- 在ArcGIS字段计算器中使用Python脚本将Text类型转换成整型
- java 死锁
- tensorflow,卷积神经网络与mnist
- verilog中的综合与不可综合
- 仿Select下拉框自动提示(easyui combobox插件实现)
- js中拼接html文档之onclick函数处理
- 文章标题 spring-cloud浅见
- SSM框架——Spring+SpringMVC+Mybatis的搭建教程 一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛。 Spring作为一个轻量级
- Eclipse安装git插件
- 设计模式の单例模式