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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© linuxpara910829 中级黑马   /  2015-1-22 17:18  /  2187 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
需求:模拟三个老师同时发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();

        }
}

3 个回复

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

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报 1 1
小手一抖,积分到手。
回复 使用道具 举报
感激for具难看~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马