java死锁和死循环


在Java编程中,死锁和死循环是两个常见的问题,它们会导致程序无法正常执行。下面我们分别来介绍一下死锁和死循环。

死锁:

public class Deadlock{private static Object lock1 = new Object();private static Object lock2 = new Object();public static void main(String[] args){new Thread(){public void run(){synchronized(lock1){System.out.println("Thread 1 acquired lock 1");try{Thread.sleep(100);}catch(Exception e){}System.out.println("Thread 1 waiting for lock 2");synchronized(lock2){System.out.println("Thread 1 acquired lock 2");}}}}.start();new Thread(){public void run(){synchronized(lock2){System.out.println("Thread 2 acquired lock 2");try{Thread.sleep(100);}catch(Exception e){}System.out.println("Thread 2 waiting for lock 1");synchronized(lock1){System.out.println("Thread 2 acquired lock 1");}}}}.start();}}

在上面的代码中,我们创建了两个线程,每个线程都尝试获取两个锁。同时,线程1先获取锁1,然后在等待获取锁2。线程2则先获取锁2,然后在等待获取锁1。这样就会导致死锁的产生。

死循环:

public class InfiniteLoop{public static void main(String[] args){int num = 0;while(num< 10){System.out.println("This loop will never stop!");num--;}}}

在上面的代码中,我们使用了一个while循环,不过我们在循环中每次减去1,这样会导致num永远小于10,因此循环永远不会停止。


上一篇:appstore没有macos

下一篇:php hosts文件


java死锁 死循环
Copyright © 2002-2019 测速网 https://www.inhv.cn/ 皖ICP备2023010105号 城市 地区 街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
热门搜索