黑马程序员技术交流社区
标题:
请设计一个死锁程序?
[打印本页]
作者:
蒲公英在飞
时间:
2014-7-16 07:17
标题:
请设计一个死锁程序?
请设计一个死锁程序?
作者:
叶飞翔
时间:
2014-7-16 07:44
这是入学测试题吗?
作者:
OCTSJimmy
时间:
2014-7-16 07:57
最简单的死循环:
class Test
{
public static void main(String[] args)
{
int x =0;
for(;;)
x=0; //预防出现无功能、空语句循环而被编译器禁止编译。(C会禁止,JAVA没有深入了解以防万一吧)
}
}
作者:
你好吗
时间:
2014-7-16 09:17
好像死循环不等于死锁吧。
作者:
蒲公英在飞
时间:
2014-7-16 20:38
class Test implements Runnable
{
private boolean flage=false;
Test(boolean flage)
{
this.flage=flage;
}
public void run()
{
if(flage)
{
synchronized(MyLock.locka)
{
System.out.println("if locka.....");
}
synchronized(MyLock.lockb)
{
System.out.println("if lockb.....");
}
}
else
{
synchronized(MyLock.lockb)
{
System.out.println("else locka.....");
}
synchronized(MyLock.locka)
{
System.out.println("else lockb.....");
}
}
}
}
class MyLock
{
public static final Object locka=new Object();
public static final Object lockb=new Object();
}
class Demo2
{
public static void main(String[] args)
{
Test a=new Test(true);
Thread t1=new Thread(a);
Thread t2=new Thread(a);
t1.start();
t2.start();
}
作者:
裤裆里的温柔、
时间:
2014-7-16 23:29
public class TestDeadLock implements Runnable {
Object o1 =new Object();
Object o2 =new Object();
public int flag =1;
@Override
public void run() {
System.out.print("flag="+flag);
if(flag==1){
synchronized (o1) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (o2) {
System.out.println("1");
}
}
}
if(flag==0){
synchronized (o2) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (o1) {
System.out.println("0");
}
}
}
}
public static void main(String[] args){
TestDeadLock td1 =new TestDeadLock();
TestDeadLock td2 =new TestDeadLock();
td1.flag=1;
td2.flag=0;
Thread t1 =new Thread(td1);
Thread t2 =new Thread(td2);
t1.start();
t2.start();
}
}
复制代码
作者:
思如涌泉
时间:
2014-7-17 07:52
非同一个对象的锁就是死锁
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2