Java两种实现多线程的方法

3.Java两种实现多线程的方法

(1)线程类

线程类继承Thread类,重写run()方法〔当该线程被执行时,要执行的内容写在run()方法中〕。

启动线程的方法:定义好线程类,先创建线程对象,然后调用start()方法来启动线程。至于该线程对象何时真正获得CPU而被运行,就由操作系统来调度。

【代码12.1】

当程序运行时,首先启动main线程。main()函数中的第3行创建了线程my Thread,第4行启动了线程my Thread。主线程main和线程my Thread并发执行,两者交替获得CPU。

代码12.1的运行结果:

hello

world

world

hello

world

hello

hello

world

world

hello

代码12.1每次运行的结果会不同,即运行结果不唯一。

因为CPU运行速度是很快的,为了体现出多道线程交替占有CPU的运行结果,在main线程和My Thread线程中都加了线程休眠的语句,见代码12.1的第7行和第20行。

(2)任务类

任务类实现Runnable接口和run()方法〔任务要执行的内容写在run()方法中〕。

启动线程的方法:定义好任务类后(代码12.2的第17行到第28行),先创建一个任务的对象(代码12.2的第3行),然后以此任务类对象为传入参数,创建一个Thread对象(代码12.2的第4行)。

【代码12.2】

代码12.1和代码12.2的运行结果是一样的。建议使用代码12.2的方法。