bjkamui 2012-12-10 20:43
浏览 351
已采纳

SWT 关闭窗口后 非UI线程如何关闭?

刚刚开始学SWT,有个问题不知道如何解决
[code="java"]
public static void main(String[] args) {
try {
ClientLoginWindow window = new ClientLoginWindow();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}

public void open() {
    Display display = Display.getDefault();
    createContents();
    shell.open();
    shell.layout();
    UdpThread.startup();//这是一个阻塞的线程,用于接收数据
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
}

[/code]
我在窗口启动时起了一个用于接收数据的线程,该线程是阻塞的.
问题是我在关闭窗口之后,java 进程还活着,我想应该是UdpThread线程没有终止造成的.
如果真是这样的话,我改如何终止线程,难道我要在线程里加判断如果窗口关闭了就终止?

  • 写回答

5条回答 默认 最新

  • jinnianshilongnian 2012-12-10 20:48
    关注

    两种方式:
    1、l注册关闭窗口的监听器
    2、Runtime.addShutdownHook()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 怎么获取下面的: glove_word2id.json和 glove_numpy.npy 这两个文件
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug