首页 > 编程语言 >Java多线程____线程死锁例子

Java多线程____线程死锁例子

时间:2023-09-13 12:37:28浏览次数:41  
标签:DeadLock Java Thread objA 死锁 objB ___ 多线程 public


1:两个任务以相反的顺序申请两个锁,死锁就可能出现

2:线程T1获得锁L1,线程T2获得锁L2,然后T1申请获得锁L2,同时T2申请获得锁L1,此时两个线程将要永久阻塞,死锁出现

Java多线程____线程死锁例子_ide

package com.zs.test;

	public class DeadLock {
		public static String objA = "objA";
		public static String objB = "objB";
	
		public static void main(String[] args) {
			Thread a = new Thread(new RunnableA());
			Thread b = new Thread(new RunnableB());
				a.start();
				b.start();
		}
	}

	class RunnableA implements Runnable {
		@Override
		public void run() {
			while (true) {
				System.out.println("线程A__:锁定objA___休眠3秒___锁定objB");
				synchronized (DeadLock.objA) {
					try {
						Thread.sleep(3000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					synchronized (DeadLock.objB) {
						System.out.println("___"+DeadLock.objA);
					}
				}
			}
		}
	}

	class RunnableB implements Runnable {
		@Override
		public void run() {
			try {
				while (true) {
					System.out.println("线程B__:锁定objB___休眠3秒___锁定objA");
					synchronized (DeadLock.objB) {
						Thread.sleep(3000);
						synchronized (DeadLock.objA) {
							System.out.println("___"+DeadLock.objB);
						}
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}



Java多线程____线程死锁例子_死锁_02


标签:DeadLock,Java,Thread,objA,死锁,objB,___,多线程,public
From: https://blog.51cto.com/ratelcloud/7454302

相关文章

  • Java多线程____生产者与消费者模型
    1.仓库类__:入库和出库的集合 有生产和出货方法packagecom.test.thread;importjava.util.LinkedList;/***@authorAdministrator*仓库类*/publicclassStorage{ //存储集合 privateLinkedList<Object>list=newLinkedList<Object>(); publicvoidruk......
  • Java多线程____线程yield方法介绍
    packagecom.test.thread;publicclassTestYield{ publicstaticvoidmain(String[]args){ TestThreadt1=newTestThread("A_01"); TestThreadt2=newTestThread("B_02"); t1.start(); t2.start(); }}classTestThreadextend......
  • Java多线程____线程状态Join()方法
    代码:packagecom.test.thread;publicclassTestRunnableimplementsRunnable{ @Override publicvoidrun(){ synchronized(this){ for(inti=0;i<10;i++){ System.out.println(Thread.currentThread().getName()); } } } }packagecom......
  • Java多线程____线程状态Sleep()方法
    Sleep():在指定的毫秒数内让当前正在执行的线程休眠调用sleep方法时使当前的线程进入休眠状态(阻塞状态)设定休眠xxxx毫秒数后进入运行状态同步块中的Sleep方法调用不会释放对象锁但调用wait()方法会释放对象的同步锁packagecom.test.thread;publicclassTestRunnableimpleme......
  • Java多线程____线程状态变化
    1.初始化状态 :和其他对象一样线程对象被创建初始化中2.可运行状态:也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程 3. 运行状态(Running) :线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。4.......
  • Java多线程____一个简单的多线程demo
    1.实现runnable接口实现功能性解耦 packagecom.test.thread;publicclassTestRunnableimplementsRunnable{ @Override publicvoidrun(){ for(inti=0;i<20;i++){ System.out.println(Thread.currentThread().getName()); } }}packagecom.test.thre......
  • Java安全架构____RSA加密配置第三方加密库问题_javax.crypto.BadPaddingException: De
    刚要写一个JCE组件是未使用第三方加密库时bug如下javax.crypto.BadPaddingException:Decryptionerroratsun.security.rsa.RSAPadding.unpadV15(UnknownSource)atsun.security.rsa.RSAPadding.unpad(UnknownSource)atcom.sun.crypto.provider.RSACipher.doFinal(RSACipher.j......
  • 异常:java.lang.ClassNotFoundException: org.apache.commons.collections.map.ListOr
    使用JSON,在SERVLET或者STRUTS的ACTION中取得数据时如果会出现异常:Java.lang.NoClassDefFoundError:net/sf/ezmorph/Morpher原因是少了JAR包,造成类找不到还必须有其它几个依赖包:commons-logging-1.0.4.jarcommons-lang-2.3.jarcommons-collections-3.2.jarcommons-beanutils-1......
  • Java多线程____BlockingQueue阻塞队列使用
    packagecom.frame.base.thread;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.ArrayBlockingQueue;/***并发编程____阻塞队列*/publicclassBlockingQueueTest{ publicstaticvoidmain(String[]args)throwsInterruptedException{......
  • 架构分布式____javaee高可用,负载均衡架构图
    ......