返回信息流public class Person extends Thread{
private Well well;
public Person(Well well){
this.well = well;
start();
}
public void run(){
//synchronized(well){
for (int i=0;i<10;i++){
well.withdraw();
yield();
//}
}
}
public static void main(String[] args) {
Well well = new Well();
Person persons[] = new Person[10];
for(int i =0;i<10;i++)
persons[i] = new Person(well);
}
}
class Well{
private int water = 1000;
public synchronized void withdraw(){
water--;
System.out.println(Thread.currentThread().getName()+": water left:"+water);
}
}
10人打水问题,发现将run()方法中的synchronized(well)改为withdraw()同步方法之后,并发性解决的并不显著。按理说10个线程的优先级默认均为5,同步方法之后应该比较随机,但结果并非如此,请教大神这个问题为什么?
这是一条镜像帖。来源:北邮人论坛 / java / #40773同步于 2015/5/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]请教java中同步与并发的问题~
jansonyan
2015/5/15镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
唔。lz是觉得连着几个同样的线程不正常?
还是说045219这样的顺序不随机?
【 在 jansonyan 的大作中提到: 】
: public class Person extends Thread{
: private Well well;
: public Person(Well well){
: ...................
不是。。我发现同步方法之后,后面的大部分结果还是“每个人打完10桶水”才换到另一个人。。按理说他要解决的不就应该是每个线程占用CPU太长这个问题么?
【 在 aiquestion 的大作中提到: 】
: 唔。lz是觉得连着几个同样的线程不正常?
: 还是说045219这样的顺序不随机?
: 【 在 jansonyan 的大作中提到: 】
: : public class Person extends
: .........
发自「贵邮」
看到这块,所以略有不懂。。Java初学者,所以来求助哈~谢暖神指点~
【 在 nuanyangyang 的大作中提到: 】
: 这种小实验,不必在意啦,并发的程序可以根据需求修改设计,来达到更大幅度的优化。比如,真的有必要一个一个地减吗?
:
发自「贵邮」