| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 413 人关注过本帖
标题:不死的小三儿:关于死锁的问题
只看楼主 加入收藏
让我们飞
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:40
专家分:119
注 册:2011-1-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
不死的小三儿:关于死锁的问题
程序代码:
public class Lock1 extends Thread {
    private String str1;
    private String str2;
   
    public Lock1(String str1,String str2) {
        super();
        this.str1 = str1;
        this.str2 = str2;
    }

    public void run(){
        synchronized(str1){
            System.out.println();
            System.out.println(this.getName()+":"+"人质"+str1+"在我手上!把钱拿过来!记得别报警!!"+str2+"万!一分都不能少!");
            System.out.println("不给钱就撕票!!!");
            if(Police.rdm()==0){
                System.out.println();
                System.out.println(this.getName()+":"+"你敢报警!!撕票!啊!我死啦~~~");
                System.out.println("旁白:"+str1+"被警察叔叔救了!");
           
               
                    try {
                        this.wait();
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                   
               
           
            }
            synchronized(str2){
//                    this.notify();
                System.out.println();
                System.out.println(this.getName()+":"+"钱以拿到,放人!");
            }
        }
    }
}
第2个类
程序代码:
public class Lock2 extends Thread {
    private String str1;
    private String str2;
   
    public Lock2(String str1,String str2) {
        super();
        this.str1 = str1;
        this.str2 = str2;
    }
    public void pay(){
       
    }
    public void run(){
        synchronized (str2) {
            System.out.println();
            System.out.println(this.getName()+":"+str2+"万,我准备好了!放人!");
            System.out.println("再不放人就报警了!");
            if(Police.rdm()==1){
                System.out.println();
                System.out.println(this.getName()+":"+"我真的没有报警啊!给你双倍钱!把人放了把");
           
               
                    try {
                        this.wait();
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
               
            }
           
            synchronized (str1) {
                System.out.println();
                System.out.println(this.getName()+":"+"钱没啦,人回来!悲剧啊!");
            }
        }
    }
}

第3个类
程序代码:
public class Police {
    public static int rdm(){
        double r=Math.random()*10;
        int rd=0;
       
        if(r<5){
            rd=0;
        }else {
            rd=1;
        }
        return rd;
    }


}public class LockTest {
    public static void main(String[] args) {
        Lock1 l1=new Lock1("三儿","1");
        Lock2 l2=new Lock2("三儿","1");
        l1.setName("劫匪");
        l2.setName("被害者");
       
        l1.start();
        l2.start();
       
    }

}


this.wait();这个让人很纠结啊~
老是报错
怎么解决死锁啊~~


搜索更多相关主题的帖子: 小三儿 
2011-08-12 20:49
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
收藏
得分:14 
synchronized 锁的对象不对!

楼上,楼下的一定要幸福开心哦!
2011-08-13 18:01
让我们飞
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:40
专家分:119
注 册:2011-1-9
收藏
得分:0 
要怎么生成锁呢?
2011-08-14 11:45
快速回复:不死的小三儿:关于死锁的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012672 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved