A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tanzhiqiu 初级黑马   /  2013-8-27 18:49  /  1058 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;

public class Test11 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                 Solt s=new  Solt();
                new Thread(new Tucker(s)).start();
                new Thread(new Sonera(s)).start();
        }

}
class Solt{
        String name;
        boolean f=false;
}
class Tucker implements Runnable{
private Solt s;
        public Tucker(Solt s) {
        super();
        this.s = s;
}
        @Override
        public void run() {
                // TODO Auto-generated method stub
                synchronized(s){
                        if(s.f){
                                try {
                                        s.wait();
                                } catch (InterruptedException e1) {
                                        // TODO Auto-generated catch block
                                        e1.printStackTrace();
                                }
                        }
                        System.out.println("妈妈做饭,发现没有盐");
                        s.f=true;
                        s.notify();
                        try {
                                s.wait();
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        System.out.println("妈妈继续做饭");
                }
        }
}
        class Sonera implements Runnable{
                private Solt s;
                public Sonera(Solt s) {
                        super();
                        this.s = s;
                }
                public void run() {
                        // TODO Auto-generated method stub
                        synchronized(s){
                                if(!(s.f)){
                                        try {
                                                s.wait();
                                        } catch (InterruptedException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                }
                                        System.out.println("儿子去买盐");
                                        s.f=true;
                                        s.notify();
                                        try {
                                                Thread.sleep(3000);
                                        } catch (InterruptedException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                        System.out.println("买盐回来");
                                        s.notify();
                                }
                        }
      }
自己写的,不知道哪里还有改进的。大家看看

3 个回复

倒序浏览
没注释....
回复 使用道具 举报
哪要这么才长啊,至少可以减一半多的。
回复 使用道具 举报
入门测试,其实不需要整这复杂,关键考察你有门有线程的概念。
if()//如果没盐
{
thread t=new thread();//开启一个线程
t.join();//让这个线程运行完毕
t.start();
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马