【发布时间】:2011-01-11 01:38:16
【问题描述】:
我正在编写一个 Java 程序,目前我正在调试的并发问题比我想处理的要多得多。
我不得不问:你在精神上设置程序时如何处理并发问题?就我而言,这是一款相对简单的游戏,但线程问题不断出现——任何快速修复几乎肯定会导致新问题。
笼统地说,在决定我的应用程序应该如何“流动”而不让所有线程都打结时,我应该使用什么技术?
【问题讨论】:
-
定义“打结”?我们是在谈论由于竞争条件导致的死锁或错误吗?
-
@meriton:没有那么多死锁,但列表不断抛出 ConcurrentModificationExceptions。我已经同步了它们的修饰函数 - 够了吗?
-
可能不会,如果执行:“if (list.Count > 0) { a = list[0]; }”会怎样?如果另一个线程清除中间的列表会发生什么?线程化不容易,千万不要掉以轻心,没有速战速决,只有经验、知识、毅力和大量的调试,才能让你的代码正常工作。
-
@Lasse V. Karlsen:听到我不是唯一一个觉得这很困难的人,我很放心。
标签: java concurrency multithreading project-planning