成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

方法一:繼承Thread類創(chuàng)建線程

Java中實現(xiàn)多線程的一種方式是繼承Thread類。Thread類本質(zhì)上是實現(xiàn)了Runnable接口的一個實例,代表一個線程的實例。啟動線程的唯一方法就是通過Thread類的start()方法。 通

Java中實現(xiàn)多線程的一種方式是繼承Thread類。Thread類本質(zhì)上是實現(xiàn)了Runnable接口的一個實例,代表一個線程的實例。啟動線程的唯一方法就是通過Thread類的start()方法。

通過繼承Thread類并復寫run()方法,我們可以自定義線程內(nèi)的操作邏輯。例如:

public class MyThread extends Thread {
    public void run() {
        ("()");
    }
}
MyThread myThread1  new MyThread();
MyThread myThread2  new MyThread();
();
();

方法二:實現(xiàn)Runnable接口創(chuàng)建線程

如果自己的類已經(jīng)繼承了其他類,則無法直接繼承Thread類。此時,可以實現(xiàn)Runnable接口來創(chuàng)建線程。

public class MyThread extends OtherClass implements Runnable {
    public void run() {
        ("()");
    }
}
MyThread myThread  new MyThread();
Thread thread  new Thread(myThread);
();

方法三:實現(xiàn)Callable接口通過FutureTask包裝器來創(chuàng)建線程

如果希望線程執(zhí)行完畢后返回結(jié)果,可以使用Callable接口配合FutureTask包裝器來創(chuàng)建線程。

public class SomeCallable extends OtherClass implements Callable {
    @Override
    public V call() throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
}
Callable oneCallable  new SomeCallable();
FutureTask oneTask  new FutureTask(oneCallable);
Thread oneThread  new Thread(oneTask);
();

方法四:使用ExecutorService、Callable、Future實現(xiàn)有返回結(jié)果的線程

ExecutorService、Callable、Future是JDK中實現(xiàn)多線程的一套接口,其中Callable接口用于定義有返回值的任務(wù)。通過將Callable任務(wù)提交給ExecutorService線程池,并使用Future對象獲取任務(wù)的返回結(jié)果,就可以實現(xiàn)有返回結(jié)果的多線程。

import *;
import ;
import ;
import ;
@SuppressWarnings("unchecked")
public class Test {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ("----程序開始運行----");
        Date date1  new Date();
        int taskSize  5;
        ExecutorService pool  (taskSize);
        List> list  new ArrayList>();
        for (int i  0; i < taskSize; i  ) {
            Callable c  new MyCallable(i   " ");
            Future f  (c);
            (f);
        }
        ();
        for (Future f : list) {
            (">>>>>"   ().toString());
        }
        Date date2  new Date();
        ("----程序結(jié)束運行----,程序運行時間【"  
                (() - ())   "毫秒】");
    }
}
class MyCallable implements Callable {
    private String taskNum;
    MyCallable(String taskNum) {
        this.taskNum  taskNum;
    }
    public Object call() throws Exception {
        (">>>>>"   taskNum   "任務(wù)啟動");
        Date dateTmp1  new Date();
        (1000);
        Date dateTmp2  new Date();
        long time  () - ();
        (">>>>>"   taskNum   "任務(wù)終止");
        return taskNum   "任務(wù)返回運行結(jié)果,當前任務(wù)時間【"   time   "毫秒】";
    }
}
                    

                    
                    

                    
標簽: