Java多线程死锁示例
程序员文章站
2024-02-26 16:10:46
本文实例演示了java多线程死锁。分享给大家供大家参考,具体如下:
package com.damlab.fz;
public class deadlock {...
本文实例演示了java多线程死锁。分享给大家供大家参考,具体如下:
package com.damlab.fz; public class deadlock { public static void main(string[] args) { resource r1 = new resource(); resource r2 = new resource(); // 每个线程都拥有r1,r2两个对象 thread myth1 = new mythread1(r1, r2); thread myth2 = new mythread2(r1, r2); myth1.start(); myth2.start(); } } class resource { private int i; } class mythread1 extends thread { private resource r1, r2; public mythread1(resource r1, resource r2) { this.r1 = r1; this.r2 = r2; } @override public void run() { while (true) { // 先获得r1的锁,再获得r2的锁 synchronized (r1) { system.out.println("1号线程获取了r1的锁"); synchronized (r2) { system.out.println("1号线程获取了r2的锁"); } } } } } class mythread2 extends thread { private resource r1, r2; public mythread2(resource r1, resource r2) { this.r1 = r1; this.r2 = r2; } @override public void run() { while (true) { // 先获得r2的锁,再获得r1的锁 synchronized (r2) { system.out.println("2号线程获取了r2的锁"); synchronized (r1) { system.out.println("2号线程获取了r1的锁"); } } } } }
运行结果:
更多java相关内容感兴趣的读者可查看本站专题:《java进程与线程操作技巧总结》、《java数据结构与算法教程》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。