产生死锁的一段代码

秒速五厘米 2022-05-12 09:16 420阅读 0赞
  1. public class Main {
  2. public static void main(String[] args) {
  3. Object obj1 = new Object();
  4. Object obj2 = new Object();
  5. new Thread(new Runnable() {
  6. public void run() {
  7. synchronized (obj1) {
  8. System.out.println("thread1 锁为 obj1");
  9. try {
  10. Thread.sleep(1000);//为了保证线程thread2启动获得obj2锁
  11. } catch (InterruptedException e) {
  12. e.printStackTrace();
  13. }
  14. synchronized (obj2) {
  15. System.out.println("thread1 锁为 obj2");
  16. }
  17. }
  18. }
  19. }).start();
  20. new Thread(new Runnable() {
  21. public void run() {
  22. synchronized (obj2) {
  23. System.out.println("thread2 锁为 obj2");
  24. synchronized (obj1) {
  25. System.out.println("thread2 锁为 obj1");
  26. }
  27. }
  28. }
  29. }).start();
  30. }
  31. }

发表评论

表情:
评论列表 (有 0 条评论,420人围观)

还没有评论,来说两句吧...

相关阅读

    相关 _Java产生简单案例

    一、简介 多个线程各自占有一些共享资源,并且互相等待其它线程占有的资源才能进行,而导致的两个或多个线程都在等待对方释放资源,都停止执行的情景。某一个同步块同时拥有“两个以

    相关 产生条件

    产生死锁的条件 (1) 互斥条件 资源是独占的且排他使用。即任意时刻一个资源只能给一个进程使用,其他申请者只有等待,直到资源被占有者释放。如例子中的A,B资源。

    相关 概念以及产生原因

    一、死锁的定义 在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统 的处理能力。然而,多个进程的并发执行也带来了新的问题——死锁。所谓死锁是

    相关 产生必要条件

    产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。     如果系统资源充足,进程的资源请求都能够得到