什么是线程
一个程序可能包含多个并发运行的任务,线程(Thread)是指一个任务从头到尾的执行流。线程提供了运行一个任务的机制。对于 Java语言,可以再一个程序中并发得启动多个线程。这些线程可以再多处理器系统上同时运行。
在单处理器系统中,多个线程共享cpu时间成为时间共享。儿操作系统负责调度以及分配资源给每一个线程。因为cpu大部时间都是空闲的,所以这种安排是切实可行的。多线程可以是程序反应更快,交互性更强、执行效率更高。例如,在使用word时,允许在输入文字的同时打印文件或者保存文件。在一些情况下即使在单处理器系统上,多想成程序的运行速度也比单线程的程序更快。
当程序作为一个应用程序运行时,java解释器为main方法启动一个线程。当程序作为一个applet运行时,web浏览器启动一个线程来运行applet。还可以在程序中创建附加的线程以执行并发任务。在java 中每一个任务都是 Ruanable几口的一个实例,也成为可运行对象。线程本质上就是便于任务执行的对象。
创建任务和线程
任务就是对象,为了创建任务首先需要为任务创建一个类,任务类必须实现Ruanable接口。Ruanable接口只有一个run方法。需要实现这个方法来高旭系统线程将如何运行。
一旦定义了一个TaskClass,就可以用它的构造方法创建一个任务。 例如 TaskClass task = newTaskClass(.....);
任务必须在线程中运行。Thread类包括创建线程的构造方法以及控制线程的很多有用的方法。使用下面的语句创建一个线程:
Thread thread = new Thread();
然后调用 thread.start() 方法告诉java虚拟机该线程准备运行;值得注意的是 条用Thread 的start 方法后并不是立即执行任务 的run方法,而是告诉虚拟机 该线程正在等待调用,置于什么时候调用,我们并不能肯定。
package LianXi;
public class TaskThreadDemo{
public static void main(String[] args){
PrintChar printC = new PrintChar('C',1000);
PrintChar printX = new PrintChar('X',1000);
PrintNum printNum = new PrintNum(1000);
Thread thread1 = new Thread(printC);
Thread thread2 = new Thread(printX);
Thread thread3 = new Thread(printNum);
thread1.start();
thread2.start();
thread3.start();
}
}
class PrintChar implements Runnable{
private char _charToPrint;
private int _times;
public PrintChar(char c,int t){
_charToPrint = c;
_times = t;
}
public void run(){
for(int i = 0 ;i <_times i>
System.out.print(_charToPrint);
}
}
}
class PrintNum implements Runnable{
private int _lastNum;
public PrintNum(int lastNum){
_lastNum = lastNum;
}
public void run(){
for(int i = 0; i<=_lastNum; i++){
System.out.print(i);
}
}
}
作者:duanmengchao 发表于2012-4-19 23:32:14 原文链接
阅读:13 评论:0 查看评论