啓動線程的方法

在線程的Tread對象上調用start()方法,而不是run()或者別的方法。java

在調用Start方法以前,線程出於新狀態中,新狀態是指有一個Thread對象!但尚未一個真正的線程。多線程

在調用start以後發生了一系列複雜的事情框架

啓動新的執行線程(具備新的調用棧)this

該線程重新狀態轉移到可運行狀態spa

當該線程得到機會執行時,其目標run()方法將運行操作系統

在java中要想實現多線程,有兩種手段,一種是繼續Thread類,另一種是實現Runable接口。線程

對於直接繼承Thread的類來講,代碼大體框架是:code

class 類名 extends Thread{
方法1;
方法2;
…
public void run(){
// other code…
}
屬性1;
屬性2;
…
 
}
class hello extends Thread {
 
    public hello() {
 
    }
 
    public hello(String name) {
        this.name = name;
    }
 
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(name + "運行     " + i);
        }
    }

public static void main(String[] args) {
        hello h1=new hello("A");
        hello h2=new hello("B");
        h1.start();
        h2.start();
    }

 private String name;
}

線程的運行須要本地操做系統的支持。因此須要使用start()而不是直接使用run()。對象

經過實現Runnable接口:blog

 

class 類名 implements Runnable{
方法1;
方法2;
…
public void run(){
// other code…
}
屬性1;
屬性2;
…
 
}
class hello implements Runnable {
 
    public hello() {
 
    }
 
    public hello(String name) {
        this.name = name;
    }
 
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(name + "運行     " + i);
        }
    }
 
    public static void main(String[] args) {
        hello h1=new hello("線程A");
        Thread demo= new Thread(h1);
        hello h2=new hello("線程B");
        Thread demo1=new Thread(h2);
        demo.start();
        demo1.start();
    }
 
    private String name;
}

【可能的運行結果】:

線程A運行     0

線程B運行     0

線程B運行     1

線程B運行     2

線程B運行     3

線程B運行     4

線程A運行     1

線程A運行     2

線程A運行     3

線程A運行     4

儘可能去實現Runnable接口

相關文章
相關標籤/搜索