黑马程序员技术交流社区

标题: 多线程的问题,求高手解答,谢谢 [打印本页]

作者: 秦久启    时间: 2013-5-26 17:59
标题: 多线程的问题,求高手解答,谢谢
某班有a、b、c3个寝室,辅导员要求3个寝室长来登记寝室成员名单(每登记一个名单休息0.5秒),每寝室4人,哪个寝室先登记,不确定,请用多线程同步模拟这一过程。自己写的感觉不对,求高手解决,谢谢。
作者: SOAR    时间: 2013-5-26 18:47
public class DormitoryHead extends Thread{
        private String dorName;//宿舍名
    public DormitoryHead(String dorName){
            super(dorName);
            this.dorName = dorName;
    }
        public void checkPerson() {
                System.out.println("我是"+this.dorName+"宿舍的舍长");
                for(int i=1;i<5;i++){
                        System.out.println(this.dorName+"宿舍的第"+i+"个人我已经查完了");
                        try {
                                Thread.sleep(500);
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }
        @Override
        public void run() {
                checkPerson();
        }

        public static void main(String[] args) {
               
                DormitoryHead d1 = new DormitoryHead("a");
                DormitoryHead d2 = new DormitoryHead("b");
                DormitoryHead d3 = new DormitoryHead("c");
                d1.start();
                d2.start();
                d3.start();
        }

}

作者: 秦久启    时间: 2013-5-26 18:59
SOAR 发表于 2013-5-26 18:47
public class DormitoryHead extends Thread{
        private String dorName;//宿舍名
    public DormitoryHead ...

你这个写的感觉有问题啊!和题目的意思不符合,下面是我刚刚写的,不知道对不对!不过还是要谢谢你。public class Demo
{
        public static void main(String args[])
        {
               
                Person p1 = new Person();
                Thread t1 = new Thread(p1,"a寝室");
                Thread t2 = new Thread(p1,"b寝室");
                Thread t3 = new Thread(p1,"c寝室");
                t1.start();
                t2.start();
                t3.start();
               
        }
}
class Person implements Runnable
{
       
        public void run()
        {
               
                for(int x=1;x<5;x++)
                {
                       
                        synchronized(this){
                                try
                                {
                                        Thread.sleep(500);
                                        System.out.println(Thread.currentThread().getName() + "的" + x + "正在登记");
                                }
                                catch (Exception e)
                                {
                                        e.printStackTrace();
                                }
                               
                               
                        }       
                       
                }
        }
       
}

作者: SOAR    时间: 2013-5-26 19:03
秦久启 发表于 2013-5-26 18:59
你这个写的感觉有问题啊!和题目的意思不符合,下面是我刚刚写的,不知道对不对!不过还是要谢谢你。publ ...

完整的题目是什么
作者: 秦久启    时间: 2013-5-26 19:07
SOAR 发表于 2013-5-26 19:03
完整的题目是什么

上面就是完整的题目,一个字都没有少。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2