java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2019-08-26 15:24:39 | 查看: 5047| 回复: 0

java线程死锁

java线程死锁
package com.wkcto.chapter07.sync.p6;
/**
 * 死锁
 * 		在线程同步时, 由于线程获得锁的顺序不一致,导致了线程出现相互等待的情况
 * 如何避免死锁?
 * 		线程如果想要获得多个锁对象, 保证获得锁对象的顺序一致 
 * @author 蛙课网
 *
 */
public class Test {

	public static void main(String[] args) {
		SubThread ta = new SubThread();
		ta.setName("a");
		ta.start();
		
		SubThread tb = new SubThread();
		tb.setName("b");
		tb.start();
	}

}

package com.wkcto.chapter07.sync.p6;

public class SubThread extends Thread {
	@Override
	public void run() {
		if ("a".equals(Thread.currentThread().getName())) {
			synchronized ("资源1") {
				System.out.println("线程a获得了资源1, 还想获得资源2");
				synchronized ("资源2") {
					System.out.println("线程a同时获得了资源1与资源2,可以做爱做的事了");
				}
			}
		}
		if ("b".equals(Thread.currentThread().getName())) {
			synchronized ("资源2") {
				System.out.println("线程b获得了资源2, 还想获得资源1");
				synchronized ("资源1") {
					System.out.println("线程b同时获得了资源1与资源2,可以做爱做的事了");
				}
			}
		}
		
	}
}

总结:

理解线程的相关概念

掌握创建线程的方式

理解线程的生命周期

掌握线程的常用方法

start()

Thread.currentThread

getName() / setName()

Thread.sleep()

理解为什么要进行线程同步? 掌握如何进行同步??

理解线程同步必须使用同一个锁对象, 常用的锁对象: 常量 , this, 当前类的运行时类

理解同步方法,

努力掌握生产者消费者设计模式

掌握Timer定时器类


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1201_1_1.html


java面试题交流群:327440556

上一篇:java反射概述 下一篇:java中Timer定时器类
您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018