b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java多线程死锁 Java多线程编程(一)

电脑杂谈  发布时间:2018-02-08 09:22:32  来源:网络整理

java多线程死锁_多线程面试题_java内存管理机制

Java多线程编程(一)-死锁

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

首先我们来看下面一段死锁代码

java内存管理机制_java多线程死锁_多线程面试题

上面代码运行将会产生死锁,因为thread1在获取a的锁后会尝试获取b的锁,但是因为此时thread2保持着b的锁且thread1保持着thread2所需要的a,因此两个线程陷入僵持状态,产生死锁.

解决死锁的办法:

避免一个线程同时获取多个锁。

java多线程死锁_多线程面试题_java内存管理机制

避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。java多线程死锁

尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制。java多线程死锁

对于锁,加锁和解锁必须在一个连接里,否则会出现解锁失败的情况。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66894-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...