多线程
java提供了并发机制,可以在程序中执行多个线程,每一个线程完成一个功能,并与其他线程并发执行,这种机制称为多线程。
18.2 实现线程的两种方法
java中提供了两种方式实现多线程,分别为继承java.lang.Thread类和实现java.lang.Runnable接口。
18.2.1 继承Thread类
继承Thread类创建一个新的线程:
public class ThreadTest extends Thread { ... }
完成线程真正功能的代码放在类的run()方法中,当一个类继承了Thread类之后,就可以在该类中覆盖run()方法,将实现该线程功能的代码写入到run()方法中,同时调用Thread类中的start()方法执行线程,也就是调用run()方法。
Thread对象需要一个任务来执行,任务实质线程在启动时执行的工作,该工作的功能代码被写在run()方法中,run()方法碧玺使用如下的语法格式:
public void run() { ... }
当执行一个线程程序的时候,就会自动产生一个线程,主方法正式在这个线程中运行的。当不再启动其他线程的时候,这个程序就是一个单线程程序,主方法线程的启动由java虚拟机负责,程序员负责启动自己的线程。
开启自己的线程的语法如下:
public static void main(String args[]) { new ThreadTest().start(); }
使用多线程倒序输出10个数字:
package thread_18_1; public class ThreadTest extends Thread{ private int count = 10; public void run() { while(true) { System.out.println(count + " "); if(--count == 0) return; } } public static void main(String args[]) { new ThreadTest().start(); } }
继承了Thread类,然后在类中覆盖了run方法,通常在run()方法中使用无限循环的形式是的线程一直运行下去,所以需要指定一个跳出循环的条件,如本例中使用变量count的值为0作为跳出循环的条件。
在main方法中,使线程执行需要调用Thread类中start()方法,start()方法调用被覆盖的run()方法,如果不调用start()方法,线程永远不会启动,在主方法中没有调用start方法之前,Thread对象只是一个实例,而不是一个真正的线程。
原文:http://www.cnblogs.com/Mr24/p/6444163.html