2.2.4一半同步,一半異步

本實驗要說明:不在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é)果來看是同步的:

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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容