黑马程序员技术交流社区

标题: 多线程 for循环问题 [打印本页]

作者: linuxpara910829    时间: 2015-1-22 17:18
标题: 多线程 for循环问题
/*
需求:模拟三个老师同时发80份试卷 每个老师相当于一个线程。
*/
class Teacher implements Runnable//实现Runnable方法有助于解决资源共享问题
{
        private int count=80;
        Object obj = new Object();
        public void run()//重写run方法
        {
                synchronized(obj)//加锁
                {
                        for (;count>0 ;count-- )
                        {
                                System.out.println(Thread.currentThread().getName()+"发放第"+count+"份试卷");
                        }
                }
        }
}
class Test5
{
        public static void main(String [] args)
        {
                Teacher tc = new Teacher();
                Thread th1 = new Thread(tc,"teacher1");

                Thread th2 = new Thread(tc,"teacher2");

                Thread th3 = new Thread(tc,"teacher3");
                th1.start();
                th2.start();
                th3.start();

        }
}
作者: linuxpara910829    时间: 2015-1-22 17:28
上边这段代码写出来不能实现多线程一直找不到问题所在
看了好几遍视频终于搞明白这个问题了  下边给大家分享下共同进步
这个问题主要是锁的问题
加了锁一个线程进去后把for循环  循环完以后才会释放锁  所以效果跟单线程是一样的  解决的方法是把for循环的条件写到循环体里边 格式是
for(;;){锁,循环条件,执行语句}
总结:这样写出来看着代码别扭  所以还是老老实实用while if循环比较好

作者: 张宁111    时间: 2015-1-22 19:47
小手一抖,积分到手。
作者: Mr.JUN    时间: 2015-1-23 12:42
感激for具难看~~~




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