Swing - 典型桌面应用程序中的并发

Jam*_* P. 2 java concurrency swing

这可能是一个广泛的问题,但我想知道并发通常用于单用户桌面应用程序的位置.您如何发现可能出现并发问题的案例(在设计阶段,理想情况下)?

PS:从操作系统理论来看,我认为并发问题通常发生在资源无法共享时(例如:打印机).尽管如此,我仍然可以在编程层面上发生这种情况.

Jim*_*Jim 5

事件调度线程和其他逻辑之间的Swing中可能存在线程问题.在EDT上运行长时间运行的代码通常是一个坏主意,因为这意味着用户界面在等待代码运行时看起来像是被锁定的.解决方案是在ProgressWorker中运行长时间运行的代码,以创建新线程.

这是我们可以解决问题的地方.如果worker和EventDispatch线程同时正在改变事物,则可能存在并发问题(想象一下在列表上循环而另一个线程修改它).这通常不是问题,因为好的摆动代码只会修改事件调度线程中的Swing组件.