线程实例化有两种方式,一种是继承Thread类,一种是实现Runnable接口。
想启动线程只能通过Thread类的Start方法才能启动线程,启动Start方法只使线程进入就绪状态,并不能进入运行状态,真正要进入运行状态是需要Java虚拟机调用run()方法才能进入运行状态(何时运行不受人为控制,要根据CPU当时的状态决定)。
自定义的线程类要想实现自己的逻辑处理,要将代码写入run()方法里,实现方法重写,遮阳就能实现自己想要的功能。
我想显示三个不同的线程的名字和休息时间(时间分别是100,200,300)。
下面附实例化线程的两种方式:
实现Runnable接口的方式:
class MyThread implements Runnable{
private String name;
private int time;
public MyThread(String name,int time){
this.name = name;
this.time =time;
}
public void run() {
try {
Thread.sleep(this.time);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("name="+this.name+" 休息时间"+this.time);
}
}
public class Test1 {
public static void main(String[] args) {
Runnable mt1 = new MyThread("1线程",100);
Runnable mt2 = new MyThread("2线程",200);
Runnable mt3 = new MyThread("3线程",300);
new Thread(mt1).start();
new Thread(mt2).start();
new Thread(mt3).start();
}
}
继承Thread类的方式:
class MyThread extends Thread{
private int time;
public MyThread(String name,int time){
super(name);
this.time = time;
}
public void run() {
try {
Thread.sleep(this.time);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("name="+this.getName()+" 休息时间"+this.time);
}
}
public class Test {
public static void main(String[] args) {
MyThread t1 = new MyThread("1线程",100);
MyThread t2 = new MyThread("2线程",200);
MyThread t3 = new MyThread("3线程",300);
t2.start();
t3.start();
t1.start();
}
}
运行结果是: