新人求教 关于死锁。
class Test implements Runnable {
private static int ticket = 100;
private boolean flag = true;
Object obj = new Object();
public void setFlag(boolean flag) {
this.flag = flag;
}
public void Test() {
}
public void run() {
if (flag) {
while (true) {
synchronized (obj) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "....." + ticket--);
}
}
}
} else while (true) {
show();}
}
public synchronized void show() {
synchronized (obj) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "....." + ticket--);
}
}
}
}
public class Ticket {
public static void main(String[] args) {
Test T = new Test();
Thread t1 = new Thread(T);
Thread t2 = new Thread(T);
t1.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
T.setFlag(false);
t2.start();
}
}求大神指导指导。。运行多次还没有出现死锁。看着没有什么问题啊。
相关推荐
什么是死锁,如何避免死锁?Java死锁详解
什么是死锁 死锁是指多个进程因竞争资源而引起的一种僵局,如果没有外力作用,所有进程都不会向前推进。 举例:假如有线程Thread1和Thread2,两个都要访问共享资源AB,Thread1和Thread2一个先访问A再访问B,另一个先访问B再访问A。但在他们线程未执行完时,都不会释放AB资源,那么就形成了一种僵局,Thread1在等待Thead2施放B资源,Thread2在等待Thread1释放A资源,两个进程就形成了一种僵局,下面以Java代码实现为例说明: public class DeadThread { private Thread thread1; public D
数据库死锁-解决死锁问题的三种办法
解决死锁问题的三种方法:预防死锁,检测死锁及避免死锁。
postgresql查询死锁以及杀死死锁进程sql.txt
查询sql的死锁进程,查找并杀死。解决生产数据库中卡死的现象。postgresql查询死锁以及杀死死锁进程sql
Mysql查看死锁与解除死锁的深入讲解
前言 前段时间遇到了一个Mysql 死锁相关的问题,整理一下。 问题描述:Mysql 的修改语句似乎都没有生效,同时使用Mysql GUI 工具编辑字段的值时会弹出异常。 什么是死锁 在解决Mysql 死锁的问题之前,还是先来了解一下什么是死锁。 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程。 死锁的表现 死锁的具体表现有两种: Mysql 增改语句无法正常生效 使用Mysql GUI 工具编辑字段的值时,会出现异常。 如何避免死锁 阻止死锁的途径
SQLSERVER死锁总结
SQLSERVER死锁总结,里面详述基于SQLSERVER数据库如何排查并处理死锁的办法,及死锁产生的原因


Java SE
