免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Java 多線程的三種實(shí)現(xiàn)方法

Java SE高級(jí)開(kāi)發(fā)——多線程的實(shí)現(xiàn)

進(jìn)程與線程的概念:
進(jìn)程:操作系統(tǒng)中,一個(gè)程序的執(zhí)行周期稱為一個(gè)進(jìn)程
線程:一個(gè)程序同時(shí)執(zhí)行多個(gè)任務(wù)的時(shí)候,我們把每一任務(wù)稱作一個(gè)線程

進(jìn)程與線程相比較,線程更”輕量級(jí)“,創(chuàng)建、撤銷一個(gè)線程比啟動(dòng)一個(gè)進(jìn)程開(kāi)銷要小的多。但是,沒(méi)有進(jìn)程就沒(méi)有線程,進(jìn)程一旦終止,其內(nèi)的線程也不再存在。

多線程與多進(jìn)程的區(qū)別:
每個(gè)進(jìn)程都擁有自己的完整變量,而線程之間則共享數(shù)據(jù)。共享數(shù)據(jù)使得線程間通信更加方便、有效。

多線程實(shí)現(xiàn):

1、繼承Thread類實(shí)現(xiàn)多線程

class MyThread extends Thread{//定義線程主體類    private String title;    public MyThread(String title){        this.title = title;    }        @Override    public void run(){        for(int i = 0; i < 10; i  ){            System.out.println(this.title   "  i = " i);        }    }}public class ThreadTest {    public static void main(String[] args) {        MyThread myThread1 = new MyThread("線程1");//創(chuàng)建新線程        MyThread myThread2 = new MyThread("線程2");        MyThread myThread3 = new MyThread("線程3");        myThread1.run();//啟動(dòng)線程        myThread2.run();        myThread3.run();    }}

運(yùn)行結(jié)果:


由運(yùn)行結(jié)果可以看出,此時(shí)線程只是按順序打印,并沒(méi)有多線程的共享數(shù)據(jù)的性質(zhì),所有我們要特別注意:?jiǎn)?dòng)線程需要使用start()方法。

public static void main(String[] args) {	MyThread myThread1 = new MyThread("線程1");	MyThread myThread2 = new MyThread("線程2");	MyThread myThread3 = new MyThread("線程3");	myThread1.start();	myThread2.start();	myThread3.start();}

此時(shí)線程變?yōu)榻惶鎴?zhí)行


2、Runable實(shí)現(xiàn)多線程

class MyThread implements Runnable{    private String title;    public MyThread(String title){        this.title = title;    }    @Override    public void run() {        for(int i = 0; i < 10; i  ){            System.out.println(this.title   "  i = " i);        }    }}public class ThreadTest {    public static void main(String[] args) {        MyThread myThread1 = new MyThread("線程1");        MyThread myThread2 = new MyThread("線程2");        MyThread myThread3 = new MyThread("線程3");        new Thread(myThread1).start();        new Thread(myThread2).start();        new Thread(myThread3).start();    }}


注意:實(shí)現(xiàn)Runnable接口比繼承Thread類所具有的優(yōu)勢(shì):
a、從形式上來(lái)說(shuō),可以避免Java中的單繼承局限

b、使用Runnable實(shí)現(xiàn)的多線程的程序類可以更好的描述出程序共享的概念

3、Callable實(shí)現(xiàn)多線程

class MyThread implements Callable<String>{    private int tickets = 10;    @Override    public String call() throws Exception {        while (this.tickets >= 0){            System.out.println("剩余票數(shù)為:" this.tickets--);        }        return "票賣完了";    }}public class ThreadTest {    public static void main(String[] args) throws InterruptedException,ExecutionException {        FutureTask<String> task = new FutureTask<>(new MyThread());        new Thread(task).start();        new Thread(task).start();        System.out.println(task.get());    }}

通過(guò)繼承Callable來(lái)實(shí)現(xiàn)多線程的特點(diǎn):可以取得線程執(zhí)行結(jié)果,具有返回值

來(lái)源:http://www.icode9.com/content-1-130451.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
多線程入門就這么簡(jiǎn)單
Java中繼承thread類與實(shí)現(xiàn)Runnable接口的區(qū)別
多線程/JAVA多線程 - 魔樂(lè)培訓(xùn) 高端JAVA培訓(xùn) 魔樂(lè)科技JAVA培訓(xùn)
[轉(zhuǎn)]Java中Runnable和Thread的區(qū)別
初學(xué)Java多線程:用Thread類創(chuàng)建線程
Java 多線程總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服