Java继承Thread类创建多线程
单线程示例
示例,Example01.java
public class Example01{
public static void main(String[] args){
// 创建MyThread实例对象
// 调用MyThread类的run()方法在运行
// 该循环是一个死循环,打印输出语句
MyThread myThread=new MyThread();
myThread.run();
while(true){
System.out.println("Main方法在运行");
}
}
}
class MyThread{
public void run(){
while (true){
// 该循环是一个死循环,打印输出语句
System.out.println("MyThread类的run()方法在运行");
}
}
}
编译运行
可以看出,程序一直在打印MyThread类的run()方法
因为,该层序是一个单线程程序,当调用MyThread类的run()方法时,遇到死循环,程序会一直进行,因此,MyThread类的打印语句,将永远执行,在main()方法中的打印语句,无法得到执行
多线程示例
如果,希望两个while循环中的打印语句,能够并发执行,就需要实现多线程
为此,JDK中提供了一个线程类Thread,通过继承Thread类,并重写Thread类中的run()方法,便可实现多线程
在Thread类中,提供了一个start()方法,用于启动新线程,线程启动之后,系统会自动调用run()方法
示例,Example02.java
public class Example02{
public static void main(String[] args){
// 创建线程MyThread的线程对象
// 开启线程
// 通过死循环语句打印输出
MyThread myThread=new MyThread();
myThread.start();
while(true){
System.out.println("main()方法在运行");
}
}
}
class MyThread extends Thread{
public void run(){
while(true){
System.out.println("MyThread类的run()方法在运行");
}
}
}
编译运行
可以看出,两个while循环中的打印语句在轮流执行,说明,该示例实现了多线程
单线程
程序在运行时,会按照代码的调用顺序进行执行
多线程
main()方法和MyThread类的run()方法,可以同时执行,互不影响