栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java learn 死锁

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java learn 死锁

死锁产生原因:
项目代码比较繁琐,多线程应用里有可能会发生死锁

死锁在数据库里的解释更为清晰全面 且难度也是很大 概念难懂

代码示例死锁:

 class fileguy {
	public static void main(String[] args) {
		players P1=new players("sd",3,3);
		players P2=new players("sd1",2,3);
		
		Thread t1=new Thread()
				{
			public void run()
			{
			try
			{
				
				synchronized(P1)
				{
					System.out.println("占用P1");
				}
				Thread.sleep(1000);
				System.out.println("试图占用P2");
				
			}catch(InterruptedException e)
			{
			e.printStackTrace();	
			}
			System.out.println("t1 等待中 。。。。");
			synchronized (P2) {
				System.out.println("do it?");
			}
			}
				};
				t1.start();
				
				Thread t2=new Thread()
				{
			public void run()
			{
			try
			{
				
				synchronized(P2)
				{
					System.out.println("占用P2");
				}
				Thread.sleep(1000);
				System.out.println("试图占用P1");
				
			}catch(InterruptedException e)
			{
			e.printStackTrace();	
			}
			System.out.println("t2 等待中 。。。。");
			synchronized (P1) {
				System.out.println("do it also?");
			}
			}
				};
				t2.start();
		
		
}
}

  1. 线程1 首先占有对象P1,接着试图占有对象P2
  2. 线程2 首先占有对象P2,接着试图占有对象P1
  3. 线程1 等待线程2释放对象P2
  4. 与此同时,线程2等待线程1释放对象P1
  5. 就这样 两个互相等着 等到…
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号