黑马程序员技术交流社区
标题:
多线程 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