再说java多线程Thread
2006-10-26 10:44
239 查看
一个程序产生一个进程,一个进程从开始到结束,中间总会有很多时间被浪费掉。看着都觉得惋惜,比如一个图形界面的程序,当你没有点击任何一个按钮的时候,
程序就什么都不做。多线程提供了一个解决多道任务并行的方法(这么好的东西,可惜好多老师认为不重要都不怎么讲)。这样一来多个任务就可以同时运行且互不
干扰。如果你愿意还可以在不同线程中通信。
讲一个简单的例子比较有说服力,在applet中显示动态显示系统时间。
import java.awt.*;
import java.applet.*;
import java.util.*;//这个包用于取得当前时间
public class Counter extends Applet {
public Label
label=new Label("您当前的系统时间:");
public Label
timeDisplay = new
Label("
");
public
void init() {//把这里改动一下同样可以在窗体中执行
this.add(label);//在applet中加入label下同
this.add(timeDisplay);
new Time();//生成一Time类的对象
}
class Time extends Thread{//发现了没有,这是一个内部类
String
hour=null;
//内部类可以直接访问外布类的数据
String minuter=null;
//外部类却不可以访问内部类的数据
String second=null;
public Time(){
start();//这样线程类一被构造,马上就运行run()
}
public void run(){
while(true){
try {
sleep(1000);//暂停一秒
} catch (InterruptedException ex) {
ex.printStackTrace();
}
Date date=new Date();
hour=String.valueOf(date.getHours());
minuter=String.valueOf(date.getMinutes());
second=String.valueOf(date.getSeconds());
timeDisplay.setText(hour+":"+minuter+":"+second);
}
}
}//内部类到此为止
}
这样做的好处是,系统资源得到很好的利用,如果用c/c++的话则要用while不停的读取,仅仅读取一个时间就占了大量的系统资源,而且读取时间的时候还不允许做其他事情。
程序就什么都不做。多线程提供了一个解决多道任务并行的方法(这么好的东西,可惜好多老师认为不重要都不怎么讲)。这样一来多个任务就可以同时运行且互不
干扰。如果你愿意还可以在不同线程中通信。
讲一个简单的例子比较有说服力,在applet中显示动态显示系统时间。
import java.awt.*;
import java.applet.*;
import java.util.*;//这个包用于取得当前时间
public class Counter extends Applet {
public Label
label=new Label("您当前的系统时间:");
public Label
timeDisplay = new
Label("
");
public
void init() {//把这里改动一下同样可以在窗体中执行
this.add(label);//在applet中加入label下同
this.add(timeDisplay);
new Time();//生成一Time类的对象
}
class Time extends Thread{//发现了没有,这是一个内部类
String
hour=null;
//内部类可以直接访问外布类的数据
String minuter=null;
//外部类却不可以访问内部类的数据
String second=null;
public Time(){
start();//这样线程类一被构造,马上就运行run()
}
public void run(){
while(true){
try {
sleep(1000);//暂停一秒
} catch (InterruptedException ex) {
ex.printStackTrace();
}
Date date=new Date();
hour=String.valueOf(date.getHours());
minuter=String.valueOf(date.getMinutes());
second=String.valueOf(date.getSeconds());
timeDisplay.setText(hour+":"+minuter+":"+second);
}
}
}//内部类到此为止
}
这样做的好处是,系统资源得到很好的利用,如果用c/c++的话则要用while不停的读取,仅仅读取一个时间就占了大量的系统资源,而且读取时间的时候还不允许做其他事情。
相关文章推荐
- 再说Java异常
- JAVA——多线程Thread
- 图解 & 深入浅出 JavaWeb:Servlet 再说几句
- 再说一下Java里面的路径问题,CLASSPATH和SOURCEPATH
- 再说java中的equals和==的区别
- 再说一下Java里面的路径问题,CLASSPATH和SOURCEPATH
- 黑马程序员__Java多线程Thread
- 再说Java动态代理
- Java再说JNI之实例
- 再说java final变量
- 《纠结学习C++还是Java》之《如何学好java》现在看不懂 转过来再说!
- 图解 & 深入浅出 JavaWeb:Servlet 再说几句
- java 虚拟机的运行时数据区
- 用Java编写二维码
- 关于java.math.bigdecimal
- java问题解答高级篇
- JSignPdf0.9.0批处理及用于Java web项目时的bug
- java关键字总结
- java中synchronized关键字作用分析
- 有关Java常见的误解小结(来看一看)