你可以执行以下 *** 作:
- 让关闭挂钩将一些
AtomicBoolean
(或易失性布尔值)“ keepRunning”设置为false - (可选地,
.interrupt
工作线程是否在某些阻塞调用中等待数据) writeBatch
通过Thread.join()
在工作线程上调用方法,等待工作线程(在你的情况下执行)完成。- 终止程序
一些粗略的代码:
- 添加一个
static volatile boolean keepRunning = true
; - 在run()中,你更改为
for (int i = 0; i < N && keepRunning; ++i) writeBatch(pw, i);
- 在main()中添加:
final Thread mainThread = Thread.currentThread();Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { keepRunning = false; mainThread.join(); }});
这大概就是我在终端中优雅地“击中Control-C时拒绝所有客户端”的方式。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)