中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java多線程的幾種寫法-創(chuàng)新互聯(lián)

Java多線程的在開發(fā)中用到的很多,簡單總結(jié)一下幾種寫法,分別是繼承Thread方法,實(shí)現(xiàn)Runnable接口,實(shí)現(xiàn)Callable接口;
1.繼承Thread方法

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),平潭網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:平潭等地區(qū)。平潭做網(wǎng)站價(jià)格咨詢:18980820575
class TestThread extends Thread{
    String name;
    public TestThread(String name){
        this.name=name;
    }
    @Override
    public void run() {
        for (int i = 0; i < 6; i++) {
            System.out.println(this.name+":"+i);
        }
    }
}

main方法調(diào)用:
Thread啟動(dòng)有兩個(gè)方法,一個(gè)是start()方法,一個(gè)是run()方法,但是直接調(diào)用run方法時(shí)線程不會(huì)交替運(yùn)行,而是順序執(zhí)行,只有用start方法時(shí)才會(huì)交替執(zhí)行

TestThread tt1 = new TestThread("A");
        TestThread tt2 = new TestThread("B");
        tt1.start();
        tt2.start();

運(yùn)行結(jié)果:
Java多線程的幾種寫法
2.實(shí)現(xiàn)Runnable接口,有多種寫法
2.1外部類

class TestRunnable implements Runnable{
    String name;
    public TestRunnable(String name){
        this.name=name;
    }
    @Override
    public void run() {
        for (int i = 0; i < 6; i++) {
            System.out.println(this.name+":"+i);
        }
    }
}

調(diào)用:

TestRunnable tr1 = new TestRunnable("C");
        TestRunnable tr2 = new TestRunnable("D");
        new Thread(tr1).start();
        new Thread(tr2).start();

2.2匿名內(nèi)部類方式

new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub

            }
        }).start();

2.3 Lamda表達(dá)式,jdk1.8,只要是函數(shù)式接口,都可以使用Lamda表達(dá)式或者方法引用

new Thread(()->{
        for (int i = 0; i < 6; i++) {
            System.out.println(i);
        }
    }).start();

2.4ExecutorService創(chuàng)建線程池的方式

class TestExecutorService implements Runnable{
String name;
public TestExecutorService(String name){
    this.name=name;
}
    @Override
    public void run() {
        for (int i = 0; i < 6; i++) {
            System.out.println(this.name+":"+i);
        }
    }
}

調(diào)用:可以創(chuàng)建固定個(gè)數(shù)的線程池

ExecutorService pool = Executors.newFixedThreadPool(2);
        TestExecutorService tes1 = new TestExecutorService("E");
        TestExecutorService tes2 = new TestExecutorService("F");
        pool.execute(tes1);
        pool.execute(tes2);
        pool.shutdown();
運(yùn)行結(jié)果跟2.1差不多

Java多線程的幾種寫法

3.實(shí)現(xiàn)Callable接口,可以返回結(jié)果

//Callable<V>提供返回?cái)?shù)據(jù),根據(jù)需要返回不同類型
class TestCallable implements Callable<String>{
    private int ticket = 5;
    @Override
    public String call() throws Exception {
        for (int i = 0; i < 5; i++) {
            if(this.ticket>0)
                System.out.println("買票,ticket="+this.ticket--);
        }
        return "票賣完了";
    }
}

調(diào)用:

Callable<String> tc = new TestCallable();
        FutureTask<String> task = new FutureTask<String>(tc);
        new Thread(task).start();
        try {
            System.out.println(task.get());//獲取返回值
        } catch (InterruptedException | ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
運(yùn)行結(jié)果:

Java多線程的幾種寫法

名稱欄目:Java多線程的幾種寫法-創(chuàng)新互聯(lián)
新聞來源:http://www.rwnh.cn/article30/dhphso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、云服務(wù)器、虛擬主機(jī)、微信小程序、靜態(tài)網(wǎng)站服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
福安市| 和平区| 广州市| 老河口市| 鄂伦春自治旗| 呼和浩特市| 宝山区| 青龙| 江门市| 盖州市| 聊城市| 名山县| 河北区| 湘乡市| 金华市| 宜昌市| 马鞍山市| 台湾省| 平谷区| 家居| 高清| 金阳县| 通榆县| 鹤峰县| 灌云县| 玉门市| 阿拉善左旗| 冷水江市| 海城市| 敦煌市| 米脂县| 油尖旺区| 德州市| 扎兰屯市| 廊坊市| 汝南县| 马尔康县| 绥棱县| 越西县| 永和县| 东山县|