什么是线程

        一个程序可能包含多个并发运行的任务,线程(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 查看评论

 

 posted on 2012-04-19 23:32  小段段  阅读(622)  评论(0编辑  收藏  举报