?? task.java
字號(hào):
package cn.com.chengang.swt.thread;
import org.eclipse.swt.widgets.Display;
public class Task {
private TaskGUI taskGUI; // 得到前臺(tái)界面的對(duì)象引用
private boolean stopFlag; // 停止后臺(tái)處理的標(biāo)志
public Task(TaskGUI taskGUI) {// 通過(guò)構(gòu)造函數(shù)傳入前臺(tái)界面類的對(duì)象引用
this.taskGUI = taskGUI;
}
public void stop() {// 停止后臺(tái)處理
stopFlag = true;
}
public void start(int taskCount) {// 開始后臺(tái)處理
stopFlag = false; // 修改停止標(biāo)志
log("后臺(tái)線程開始執(zhí)行任務(wù)......\n");
for (int i = 0; i < taskCount; i++) {
if (stopFlag)// 一旦發(fā)現(xiàn)標(biāo)志被設(shè)為停止,則退出循環(huán)
break;
// 每隔0.1秒一次循環(huán),用于模擬一個(gè)需時(shí)較長(zhǎng)的任務(wù)
try {
Thread.sleep(100);
} catch (InterruptedException e) {
log(e.getMessage());
}
log("任務(wù)" + (i + 1) + "處理完畢\n");
notifyOneTaskFinish(i);// 通知完成了一個(gè)任務(wù)
}
log("后臺(tái)線程結(jié)束執(zhí)行任務(wù)!!!!!!\n");
notifyAllTasksFinish();// 通知已完成了所有任務(wù)
}
private void log(final String str) {
Display.getDefault().syncExec(new Runnable() {
public void run() {
// 向前臺(tái)界面的consoleText輸出字符串
taskGUI.consolePrintln(str);
}
});
}
private void notifyOneTaskFinish(final int progress) {
Display.getDefault().syncExec(new Runnable() {
public void run() {
// 移動(dòng)前臺(tái)界面的進(jìn)度條
taskGUI.moveProgress(progress);
}
});
}
private void notifyAllTasksFinish() {
Display.getDefault().syncExec(new Runnable() {
public void run() {
// 修改界面按鈕狀態(tài),讓執(zhí)行按鈕有效,停止按鈕無(wú)效
taskGUI.setButtonState(true);
}
});
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -