Java线程学习

一、使用方法

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方法来启动线程。


运行结果如下:

Java线程学习

自己手贱,为了在享受一次学习成果就又运行了一次,发现一个问题

Java线程学习

第一运行,是先println李四,第二次运行则先println张三。

回顾前面的代码:  Thread th1 = Thread("张三"); th1.start();

分明是th1先调用的start方法啊,为什么第一次运行先println李四呢?


让我们先来了解一下线程从生到死的过程,就好解释这个问题了。


二、线程的生死存亡过程

线程丛生到死一共分为五步,即:创建、可运行、运行、等待/阻塞/睡眠、死亡。

Java线程学习

本文出自 “听雨轩” 博客,请务必保留此出处http://heyijx2.blog.51cto.com/925730/1378035

Java线程学习,布布扣,bubuko.com

Java线程学习

上一篇:线程Thread join 方法


下一篇:Toast之后线程阻塞了之后会怎样?