java多线程之入门(2)
2015-01-03 19:43
127 查看
转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/42366759
作者:小马
接着上一篇,用多线程重新实现counter1的示例,这样不会产生假死现象,如下图:
达到这样效果的原理就是start按钮开启的计数显示行为放在一个子线程里运行,这样主线程窗体的事件响应就不会受到阻塞。
子线程类用到了内部类,结构更紧凑,而且也便于子线程类访问像JTextField这样的私有成员,run函数的实现放在了这个线程类中。另外,SeparateSubTask作为私有的内部类,表示只有Counter2有权限访问它,其它类都禁止。
run函数里,sleep有必要多说几句,不要以为没有这个sleep程序就会假死。其实子线程已经在运行了,程序可以正常的响应主线程中的任何事件,这个sleep唯一影响的就是显示数字的速度。
start按钮的事件监听对象的实现也变了,由原来的直接调用go函数改为启动一个子线程,而toggle按钮的事件监听实现还是一样的,改变runFlag标志的状态。
http://blog.csdn.net/pony_maggie/article/details/42366759
作者:小马
接着上一篇,用多线程重新实现counter1的示例,这样不会产生假死现象,如下图:
达到这样效果的原理就是start按钮开启的计数显示行为放在一个子线程里运行,这样主线程窗体的事件响应就不会受到阻塞。
public class Counter2 extends JApplet { private class SeparateSubTask extends Thread { private int count = 0; private boolean runFlag = true; public SeparateSubTask() { // TODO Auto-generated constructor stub start(); } void invertFlag() { runFlag = !runFlag; } public void run() { while(true) { try { sleep(100); } catch (InterruptedException e) { // TODO: handle exception System.err.println("interrupted"); } if(runFlag) { t.setText(Integer.toString(count++)); } } } }
子线程类用到了内部类,结构更紧凑,而且也便于子线程类访问像JTextField这样的私有成员,run函数的实现放在了这个线程类中。另外,SeparateSubTask作为私有的内部类,表示只有Counter2有权限访问它,其它类都禁止。
run函数里,sleep有必要多说几句,不要以为没有这个sleep程序就会假死。其实子线程已经在运行了,程序可以正常的响应主线程中的任何事件,这个sleep唯一影响的就是显示数字的速度。
class StartL implements ActionListener { //点击start按钮触发go函数执行。 public void actionPerformed(ActionEvent e) { if(sp == null) sp = new SeparateSubTask(); } } class OnOffL implements ActionListener { public void actionPerformed(ActionEvent e) { if(sp != null) sp.invertFlag(); } }
start按钮的事件监听对象的实现也变了,由原来的直接调用go函数改为启动一个子线程,而toggle按钮的事件监听实现还是一样的,改变runFlag标志的状态。
相关文章推荐
- 1 Java 多线程入门大全(适用于有一定基础者)
- Java多线程入门
- 【重磅出击】 java入门到精通——多线程(上)
- java 多线程 synchronized 入门博文二
- java 多线程 例子 入门博文一
- Java 多线程入门大全(适用于有一定基础者)
- java多线程简单案例入门
- 黑马程序员——Java多线程入门
- 黑马程序员_java入门_多线程
- JAVA笔记:多线程入门
- Java语言入门 -- 第七章 Java的多线程
- java 多线程入门
- Java多线程程序设计入门-Java基础-Java-编程开发
- Java5 多线程(一)--入门篇
- Java多线程入门
- Java多线程程序设计入门
- Java 多线程入门大全(适用于有一定基础者)
- Java 多线程入门
- 【重磅出击】 java入门到精通——多线程(中)
- java多线程入门知识及示例程序