我真的不喜欢在旅途中发布多个问题,抱歉,如果这是烦人的。同步是如何工作的?
我终于设法解决了我的问题。除了我不确定它是可靠的还是明智的。
public void run() {
// TODO Auto-generated method stub
float time = 0.01f;
try {
while(time < timer)
{
time+=0.1f;
Thread.sleep(100);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
synchronized (ProgressBar.class) {
int val =++ProgressBar.threadCount;
if(val == 10)
{
System.out.println("All threads are finished!") ;
}
}
}
}
我已经测试了5分钟,现在看来工作。 但有人可以解释发生了什么?当线程启动时,它确保同步块未被使用,否则等待它完成。 那它是一些排队系统吗? 再次感谢。 编辑:
以前的链接 How does AtomicInteger work?
Thread.join freezes progressbar
怎么了downvotes?这不是一个有效的问题吗? –
我还没有投票,但我有我的问题与这个问题。你提到一个早期的问题,但不要链接到它(你期望我去搜索它吗?)。你没有解释代码应该做什么。您的代码示例不会显示您的线程是如何创建的,也不会显示您的案例中的ProgressBar。 – ibid
阅读 - http://download.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html – adatapost