程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JAVA創建線程,java線程

JAVA創建線程,java線程

編輯:JAVA綜合教程

JAVA創建線程,java線程


    要想讓對象能具有多線程功能,只需要繼承java.lang.Thread類或是實現java.lang.Runnable接口。Java的線程是通過java.lang.Thread類來實現的。當生成一個Thread類對象之後,一個新的線程就產生了。通過該實例對象可以啟動、終止、掛起線程等。它的構造方法如下:
public Thread(ThreadGroup group,Runnable target,String name);
第一個參數是線程所屬的線程組;target是實際執行線程體的目標對象,它必須實現接口Runnable;name是線程名

此外,當某個參數為null時,有下面的幾個方法
public Thread();
public Thread(Runnable target);
public Thread(Runnable target,String name);
public Thread(String name);
public Thread(ThreadGroup group,Runnable target);
public Thread(ThreadGroup group,String name);


    
    任何實現接口Runnable的對象都可以作為一個線程的目標對象。Thread類本身也實現了接口Runnable,因此可以通過兩種方法實現線程體:
(1)、定義一個線程類,繼承Thread類並重寫其中的run()方法。這時在初始化這個類的實例時,target可為null,表示由這個實例對象來執行。

class ComputerSum{
    int sum;
    public void setSum(int n){
        sum=n;
    }
    public int getSum(){
        return sum;
    }
}

class People extends Thread{
    int timeLength;
    ComputerSum CS;
    People(String s,int timeLength,ComputerSum sum){
        setName(s);//調用Thread類的setName()
        this.timeLength=timeLength;
        CS=sum;
    }
    
    public void run(){
        for(int i=1;i<=5;i++){
            int m=CS.getSum();
            CS.setSum(m+1);
            System.out.println("我是"+getName()+",和:"+CS.getSum());
        }
        try{
            sleep(timeLength);
        }catch(InterruptedException e){}
    }
}

public class ChildThread{
    public static void main(String args[]){
        People teacher,student;
        ComputerSum sum=new ComputerSum();
        teacher=new People("老師",200,sum);
        student=new People("學生",200,sum);
        teacher.start();
        student.start();
    }
}

 


(2)、提供一個實現接口Runnable的類作為一個線程的目標對象,在初始化一個Thread類或者Thread子類的線程對象時,把目標傳給這個線程實例,由該目標對象提供線程體run()。

class A implements Runnable{
    Thread th;
    A(){
         th = new Thread(this, "Demo Thread");
    }
    public void run(){
        System.out.println("class A實現了Runnable接口,並且還可以繼承別的類");
    }
}

public class RunnableThread{
    public static void main(String args[]){
        A a= new A();
        a.th.start();
        System.out.println("這是主線程");
        
    }
} 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved