创建一个线程可以使用Thread类,Thread类定义了多个构造方法,常用的构造方法如下:
● public Thread(String name)
该构造函数创建一个名称为name的线程。
● public Thread ()
该构造函数创建一个没有命名的线程。
在程序中需要创建线程时,一般会创建Thread类的子类,子类会重写Thread类的run()方法,线程功能的代码需要写入到run()方法中,然后再调用Thread类的start()方法来执行线程,start()方法会调用run()方法,执行run()方法内的线程代码。
案例1:建立Thread类的子类MyThread类,重写Thread类run()方法。
新建项目PCoreUnit7,在PCoreUnit7项目新建thread包,在thread包下新建MyThread类。代码如下:
package thread;
/**
* @ClassName: MyThread
* @Description: 多线程操作(使用Thread类创建线程)案例1
* @author 编程训练营
* @date
*
*/
public class MyThread extends Thread {
/**
* <p>Title: run</p>
* <p>Description: </p>
* @see java.lang.Thread#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
// 在线程中执行的代码
for( int i = 0; i<100; i++ ) {
System.out.println("MyThread:" + i);
}
}
}MyThread类继承Thread类,并重写了Thread类的run()方法。在run()方法内部编写线程要执行的代码。
在thread包下新建MyThreadTest测试类,启动MyThread线程。代码如下:
package thread;
/**
* @ClassName: MyThreadTest
* @Description: 多线程操作(使用Thread类创建线程)案例1
* @author 编程训练营
* @date
*
*/
public class MyThreadTest {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// 实例化MyThread对象
MyThread thread = new MyThread();
// 调用Thread类的strat()方法启动线程
thread.start();
}
}MyThreadTest程序启动后,Java虚拟机会为该程序创建一个主线程,main()方法就是在主线程上运行的。如果在main()方法中没有再启动其它线程,该程序就是单线程,当在main()方法中启动了其它线程,该程序就是多线程。
在MyThreadTest程序的主方法中,实例化MyThread对象并调用了Thread类的start()方法,MyThread线程被启动。这是MyThreadTest程序有两个线程在运行,一个线程是主线程,一个线程是实例化的MyThread线程。
程序执行结果如下图所示:
