本文主要是介绍模拟线程死锁——Thread学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
记录一下之前写过的一段模拟死锁的代码:
/*** 模拟死锁** @author lixiang* @date 2018年10月12日 - 9:51* @history 2018年10月12日 - 9:51 lixiang create.*/
public class HoldLockDemo {private static Object[] lock = new Object[10];private static Random random = new Random();static {for (int i = 0; i < lock.length; i++) {lock[i] = new Object();}}public static class HoldLockTask implements Runnable {private int i;public HoldLockTask(int i) {this.i = i;}@Overridepublic void run() {try {while (true) {synchronized (lock[i]) {if (i % 2 == 0) {// 等待lock[i].wait(random.nextInt(10));} else {// 通知lock[i].notifyAll();}}}} catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String[] args) {for (int i = 0; i < lock.length * 2; i++) {// 每两个线程使用同一个锁对象new Thread(new HoldLockTask(i / 2)).start();}}
}
如有问题还请不吝赐教!!!
这篇关于模拟线程死锁——Thread学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!