我正在编写一个通过串行端口执行某些操作的 java GUI。因为我不希望它在等待响应时阻塞,所以我认为有一个线程这样做是一种更好的方法,但现在我面临两个选择,我不知道哪个更有效:
- 案例 1:为每个异步任务创建一个线程。
- 案例 2:保持单个线程休眠并通过更改原子整数的值然后中断它来让它执行不同的任务。
这些操作都不会是处理器密集型的,但我仍然想知道将线程永久保留在内存中是否明智。
我正在编写一个通过串行端口执行某些操作的 java GUI。因为我不希望它在等待响应时阻塞,所以我认为有一个线程这样做是一种更好的方法,但现在我面临两个选择,我不知道哪个更有效:
这些操作都不会是处理器密集型的,但我仍然想知道将线程永久保留在内存中是否明智。
我会使用一个单线程的 ExecutorService 像
private final ExecutorService service = Executors.newSingleThreadExecutor();
service.submit(new Runnable() {
public void run() {
// task to perform here.
}
});
您可能需要不同的线程来读取和写入串行设备。
看看ExecutorService,我想这就是你所需要的。
正如 Peter 所建议的,您可以ExecutorService
使用 newSingleThreadExecutor创建并使用它来处理您的任务。