一、使用方法
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李四呢?
让我们先来了解一下线程从生到死的过程,就好解释这个问题了。
二、线程的生死存亡过程
线程丛生到死一共分为五步,即:创建、可运行、运行、等待/阻塞/睡眠、死亡。
本文出自 “听雨轩” 博客,请务必保留此出处http://heyijx2.blog.51cto.com/925730/1378035