线程创建的两种方法
(1)继承Thread类,重写run函数。
(2)实现Runnable接口,进而实现接口中的run函数。
以下是两种线程创建的详细解析:
- 继承Thread类实现
//将类声明为Thread类的子类,该子类应该重写Thread类的run方法
class MyThread extends Thread{
//成员变量
属性1;
属性2;
...
//包括构造函数在内的成员函数
函数1;
函数2;
...
public void run()
{
任务代码
...
}
}
//分配并启动一个线程
MyThread thread = new MyThread();
thread.start;
实例1
/*
*MyThread.java
*/
public class MyThread extends Thread{
public static final int STEP = 100;
private String name;
public MyThread(String name){
this.name = name;
}
public void run(){
for (int i = 0; i < STEP; i++) {
System.out.println(name + "运行" + i);
}
}
}
/*
*MultipleThreadTest.java
*/
public class MultipleThreadTest {
public static void main(String[] args) {
MyThread t1 = new MyThread("线程A");
t1.start();
MyThread t2 = new MyThread("线程B");
t2.start();
}
}
可能的运行结果
- 实现Runnable接口实现
//实现Runnable接口,将 *任务代码* 放在run方法中
class MyRunnable implements Runnable{
//成员变量
属性1;
属性2;
...
//包括构造函数在内的成员函数
函数1;
函数2;
...
public void run(){
任务代码
...
}
//下列代码会创建并启动一个线程
Runnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();
}
来看一个实例吧
/*
*MyRunnable.java
*/
public class MyRunnable implements Runnable{
public static final int STEP = 100;
private String name;
public MyRunnable(String name){
this.name = name;
}
public void run(){
for (int i = 0; i < STEP; i++) {
System.out.println(name + "运行" + i);
}
}
}
/*
*MultipleThreadRunnable.java
*/
public class MultipleThreadRunnable{
public static void main(String[] args) {
Runnable r1 = new MyRunnable("线程A");
Thread t1 = new Thread(r1);
t1.start();
Runnable r2 = new MyRunnable("线程B");
Thread t2 = new Thread(r2);
t2.start();
}
}
可能的运行结果
两种创建方法的区别
待续….