1. 程式人生 > >多執行緒(1)——多執行緒的建立與啟動

多執行緒(1)——多執行緒的建立與啟動

執行緒的建立

執行緒的建立主要要3種方法。
1. 繼承Thread類

package cn.zengzehao.thread;

public class FirstThread {
    public static void main(String[] args) throws InterruptedException {
        //建立執行緒
        MyTaskThread thread = new MyTaskThread();
        //或者這樣子建立執行緒
        //Thread thread = new Thread(new MyTaskThread()); 
//啟動執行緒 thread.start(); } } class MyTaskThread extends Thread{ @Override //重寫父類的run()方法 public void run() { System.out.println("我是繼承Thread的執行緒"); } }
  1. 實現Runnable介面
package cn.zengzehao.thread;

public class RunnableTest {
    public static void main(String[] args) {
        //建立執行緒
Thread thread = new Thread(new MyThread()); Thread thread2 = new Thread(new Runnable() { @Override public void run() { System.out.println("我是執行緒2"); } }); //啟動執行緒 thread.start(); thread2.start(); } } class
MyThread implements Runnable{
//實現Runnable介面的run()方法 @Override public void run() { try { Thread.sleep(2000); System.out.println("我是實現Runnable"); } catch (InterruptedException e) { e.printStackTrace(); } } }
  1. 通過Callable和Future建立執行緒
package cn.zengzehao.thread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class CallableTest {
    public static void main(String[] args) {
        //使用FutureTask類來包裝Callable物件
        FutureTask<Integer> ft = new FutureTask<Integer>(new MyTask());
        //啟動執行緒
        new Thread(ft).start();
        try {
            //獲取執行緒返回的值
            Integer sum = ft.get();
            System.out.println("列印返回來的值:"+sum);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}
class MyTask implements Callable<Integer>{

    //實現Callable的call()方法
    @Override
    public Integer call() throws Exception {
        System.out.println("實現Callable");
        int sum = 0;
        for(int i=0;i<=100;i++){
            sum+=i;
        }
        return sum;
    }

}