随着代码库变得越来越大,我发现它在通过文档规定哪些方法具有线程限制(最常见的是必须在Swing EDT上运行的方法)方面变得不那么一致。同样,如果知道并提供静态意识到哪些(我们自定义的)侦听器按规范在EDT上通知将非常有用。
所以我想这应该是可以使用注释轻松强制执行的内容。不出所料,至少存在一个静态分析工具CheckThread,使用注释来完成这项工作。它似乎允许您声明方法被限制为特定线程(最常见的是EDT),并将标记试图调用该方法但未声明自己被限制为该线程的方法。
因此,表面上看起来,这只是源代码和构建周期中低痛苦、高收益的补充。我的问题是:
- 有没有人使用CheckThread或类似的库来强制执行线程约束的成功故事?有任何失败的故事吗?为什么会成功/失败?
- 从理论上讲,这是好的吗?是否有理论上的缺点?
- 从实践上来看,这很好吗?这值得了吗?它带来了什么价值?
- 如果它在实践中有效,有哪些支持此功能的好工具?我只发现了CheckThread,但承认我不完全确定我要搜索什么以找到其他做同样事情的工具。