使用线程(启动和停止它们)

时间:2013-05-25 18:25:09

标签: java concurrency swt

我有两个SWT按钮 - “开始”和“停止”以及org.eclipse.swt.widgets.List。 在列表中,我保留了一个目录和一个打印机名称。

我们的想法是将指定目录中的文件(PDF)发送到指定的打印机(print(inputPath, printerName))。

因此,当我点击“开始”时,会创建一个新的Thread()以便调用print(inputPath, printerName)

基本上,任务是:

每次点击“开始”时,都会创建一个新的主题(每当list.getItem(list.getSelectionIndices())不同时)。

每次单击“停止”时 - 销毁特定线程(对于相同的list.getItem(list.getSelectionIndices()))。

我看到了一些FutureExecutorServiceRunnable等示例,但我无法弄清楚如何将它们组合在一起以便解决我的问题。

所以,任何帮助/提示都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

只需要一个Thread类变量。当您单击按钮start时,检查线程是否已经存在,如果它没有,则创建新线程并启动它。 isRunning()只检查boolean以查看该线程是否处于运行状态

if (thread == null || !thread.isRunning()){
    thread = new MyThreadClass();
    thread.start();
}

单击停止时,在线程中设置一个标志,告诉它现在已完成处理,如setStop()

if (thread != null){
    thread.setStop();
}