Nil*_*ils 14 java concurrency multithreading assert
我有一个多线程Java程序,其中包含一些围绕线程的规则:例如,A类中的代码只能从UI线程调用; 必须仅从网络线程等调用B类中的3个方法.
关于如何进行断言或其他代码检查的任何建议都遵循这些规则?我想做相当于"不变量"的测试,以防止线程使用上的编码错误.
rob*_*x44 13
除了adamfisk的优秀建议之外,还有一种方便的方法来专门测试当前线程是否是EDT线程:
EventQueue.isDispatchThread()
Run Code Online (Sandbox Code Playgroud)
你可以试试
assert Thread.currentThread() == expectedThread;
Run Code Online (Sandbox Code Playgroud)
使用该名称的问题是任何数量的线程都可以使用该名称,例如,如果您特别偏执,您可能会担心这样的代码.
Thread.t = Thread.currentThread();
String name = t.getName();
t.setName("UI thread");
callUIThreadOnlyMethod();
t.setName(name);
Run Code Online (Sandbox Code Playgroud)