2.2.4一半同步,一半異步

本實(shí)驗(yàn)要說(shuō)明:不在synchronized塊中就是異步執(zhí)行,在synchronized塊中就是同步執(zhí)行

/**
 * @author wuyoushan
 * @date 2017/1/23.
 */
public class Task {
    public void doLongTimeTask(){
        for(int i=0;i<100;i++){
            System.out.println("nosynchronized threadName= "
            +Thread.currentThread().getName()+" i= "+(i+1));
        }
        System.out.println("");
        synchronized (this){
            for(int i=0;i<100;i++){
                System.out.println("synchronized threadName= "
                        +Thread.currentThread().getName()+" i= "+(i+1));
            }
        }
    }
}

/**
 * @author wuyoushan
 * @date 2017/4/13.
 */
public class MyThread1 extends Thread{

    private Task task;
    public MyThread1(Task task) {
        super();
        this.task=task;
    }

    @Override
    public void run() {
        super.run();
        task.doLongTimeTask();
    }
}

/**
 * @author wuyoushan
 * @date 2017/4/13.
 */
public class MyThread2 extends Thread{

    private Task task;
    public MyThread2(Task task) {
        super();
        this.task=task;
    }

    @Override
    public void run() {
        super.run();
        task.doLongTimeTask();
    }
}

/**
 * @author wuyoushan
 * @date 2017/4/13.
 */
public class Run {
    public static void main(String[] args) {
        Task task=new Task();
        MyThread1 thread1=new MyThread1(task);
        thread1.start();

        MyThread2 thread2=new MyThread2(task);
        thread2.start();
    }
}

程序的結(jié)果不是固定的但從輸出的結(jié)果來(lái)看是同步的:

nosynchronized threadName= Thread-0 i= 56
nosynchronized threadName= Thread-1 i= 97
nosynchronized threadName= Thread-0 i= 57
nosynchronized threadName= Thread-1 i= 98
nosynchronized threadName= Thread-0 i= 58
nosynchronized threadName= Thread-1 i= 99
nosynchronized threadName= Thread-0 i= 59
nosynchronized threadName= Thread-1 i= 100
nosynchronized threadName= Thread-0 i= 60

nosynchronized threadName= Thread-0 i= 97
synchronized threadName= Thread-1 i= 37
nosynchronized threadName= Thread-0 i= 98
synchronized threadName= Thread-1 i= 38
nosynchronized threadName= Thread-0 i= 99
synchronized threadName= Thread-1 i= 39
nosynchronized threadName= Thread-0 i= 100

synchronized threadName= Thread-1 i= 40
synchronized threadName= Thread-1 i= 41
synchronized threadName= Thread-1 i= 42
synchronized threadName= Thread-1 i= 43
synchronized threadName= Thread-1 i= 44
synchronized threadName= Thread-1 i= 45
synchronized threadName= Thread-1 i= 46
synchronized threadName= Thread-1 i= 47
synchronized threadName= Thread-1 i= 48

摘選自 java多線程核心編程技術(shù)-2.2.4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽(yáng)閱讀 2,503評(píng)論 1 15
  • Java多線程學(xué)習(xí) [-] 一擴(kuò)展javalangThread類 二實(shí)現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 2,994評(píng)論 1 18
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,376評(píng)論 11 349
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,779評(píng)論 18 399
  • 養(yǎng)兒子的父親和養(yǎng)女兒的父親是不一樣的。 都說(shuō)女兒是父親的上輩子情人,所以當(dāng)女兒逐漸長(zhǎng)大,作為父親,既高興,但內(nèi)心深...
    一葉不是秋閱讀 421評(píng)論 0 1