一、使用方法
Java中,线程的使用方法主要分为两类,一是扩展 java.lang.Thread类,二是实现 Runnable接口。
扩展Thread类方法实例:
//扩展java.lang.Thread类
public class Main extends Thread{
public Main(String name){
super(name)
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread th1 = new Main("张三");
Thread th2 = new Main("李四")
th1.start();
th2.start();
}
public void run(){
for(int i=1; i<6;i++){
System.out.println(this.name+i)
}
}
}
实现Runnable接口实例:
public class MyThread implemets Runnable{
private String name;
public MyThread (String name){
this.name = name;
}
//实现Runnable接口的run方法
@Override
public void run(){
for(i=1; i<6; i++){
System.out.println(name+i);
}
}
}
public class Main {
public static void main(String[] args){
MyThread my1 = new MyThread("张三");
MyThread my2 = new MyThread("李四");
Thread th1 = new Thread(my1);
Thread th2 = new Thread(my2);
th1.start();
th2.start();
}
}
从以上两种方式可以看出,线程的实现方法是放在run方法中的,所以需要实现/重写run方法。其次是要用Thread类调用start方法来启动线程。
自己手贱,为了在享受一次学习成果就又运行了一次,发现一个问题
第一运行,是先println李四,第二次运行则先println张三。
回顾前面的代码: Thread th1 = Thread("张三"); th1.start();
分明是th1先调用的start方法啊,为什么第一次运行先println李四呢?
让我们先来了解一下线程从生到死的过程,就好解释这个问题了。
二、线程的生死存亡过程
线程丛生到死一共分为五步,即:创建、可运行、运行、等待/阻塞/睡眠、死亡。
阅读(1251) | 评论(1) | 转发(0) |