利用wait() notify() 写了一个。
import javaawtBorderLayout;
import javaawtColor;
import javaawtContainer;
import javaawtFlowLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJPanel;
import javaxswingJTextField;
class ThreadClass extends JTextField implements Runnable {
//--- flag 控制线程状态 ---
private boolean flag = true;
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
thisflag = flag;
}
//--- 通过累计计数模拟线程运行---
int times = 0;
//--- 设置文本框主要是显示线程状态 ---
public ThreadClass(String s) {
super(s);
setBackground(ColorORANGE);//---橘黄
setEditable(false);
setHorizontalAlignment(JTextFieldCENTER);
}
@Override
public void run() {
process();
}
private synchronized void process() {
while (true) {//无限循环e799bee5baa6e4b893e5b19e31333361323537
if (flag == true) {
thissetText("This is the " + (times++)
+ "th times running \n");
try {
Threadsleep(100);
} catch (InterruptedException ie) {
ieprintStackTrace();
}
notify();//--- 唤醒另一线程 --- ,本代码其实没有其他等待线程,这个可不用 ---
} else {
thissetText(" When times = " + times + "\n The thread is paused!");
try {
wait();//--- 进入等待
} catch (InterruptedException ie) {
ieprintStackTrace();
}
}
}
}
}
public class ThreadControll extends JFrame {
ThreadClass a = new ThreadClass("请按开始按钮!");
Thread startThread = null;
public ThreadControll(String s) {
super(s);
final Container c = getContentPane();
csetLayout(new BorderLayout());
JPanel jp = new JPanel(new FlowLayout());
JButton button_start = new JButton("开始");
JButton button_pause = new JButton("暂停");
JButton button_resume = new JButton("恢复");
jpadd(button_start);
jpadd(button_pause);
jpadd(button_resume);
//--- 开始按钮只执行一次 ---
button_startaddActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
if (null == startThread) {
startThread = new Thread(a);
startThreadstart();
}
}
});
//--- 暂停按钮 ,按下后如果没有按继续,就不改变标志 ---
button_pauseaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (aisFlag() != false) {
asetFlag(false);
}
}
});
//--- 恢复按钮,这个最关键,主要是用notify()让线程继续执行,---
button_resumeaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (aisFlag() == false) {
asetFlag(true);
synchronized (a) {//--- 如果不放在同步快里,无法实现唤醒 ---
anotify();//--- 这个代码执行完后,a对象锁就释放了 所以process() 方法里德 notify()可不用---
}
}
}
});
cadd(jp,BorderLayoutNORTH);
cadd(a, BorderLayoutCENTER);
}
//--- 入口 ---
public static void main(String[] args) {
ThreadControll tc = new ThreadControll("test");
tcsetSize(400, 200);
tcsetVisible(true);
tcsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
}
版本 2
支持库 shellEx
支持库 eAPI程序集 窗口程序集1子程序 __启动窗口_创建完毕注册热键 (取窗口句柄 (), 标签1取窗口句柄 (), 0, #F10键)
子程序 _标签1_反馈事件, 整数型
参数 参数一, 整数型
参数 参数二, 整数型终止进程 (“QQMusicexe”)
以上就是关于tc综合开发工具中如何用一个热键关闭当前某个正在运行线程全部的内容,包括:tc综合开发工具中如何用一个热键关闭当前某个正在运行线程、易语言的问题--热键F10强行关闭指定程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)