1. 程式人生 > >《Java---多執行緒交替列印1,2》

《Java---多執行緒交替列印1,2》

1.這種方法可以再新增多個執行緒,定義好執行的順序就可以了。喚醒的時候全部喚醒。不是當前執行緒執行時還說會休眠。

public class Main {

    private static boolean isFirst = true;

    static class First implements Runnable {
        private Object lock;

        public First(Object lock) {
            this.lock = lock;
        }
        @Override
        public
void run() { while (true) { synchronized (lock) { if (isFirst) { System.out.println("1"); isFirst = false; lock.notify(); } else { try { lock
.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } static class Second implements Runnable { Object lock; public Second
(Object lock) { this.lock = lock; } @Override public void run() { while (true) { synchronized (lock) { if (!isFirst) { System.out.println("2"); isFirst = true; lock.notify(); } else { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } public static void main(String[] args) { Object lock = new Object(); new Thread(new First(lock)).start(); new Thread(new Second(lock)).start(); } }

2.這種方式只是此問題的另一隻解法而已。

public class Main {

    public synchronized void print(String str) {
        notify();
        System.out.println(str);
        try {
            wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    class A implements Runnable {

        @Override
        public void run() {
            while (true) {
                print("A" + 1);
            }
        }
    }

    class B implements Runnable {

        @Override
        public void run() {
            while (true) {
                print("B" + 2);

            }

        }
    }

    public static void main(String[] args) {
        Main p = new Main();
        A a = p.new A();
        B b = p.new B();
        new Thread(a).start();
        new Thread(b).start();

    }

}

相關推薦

Java---執行交替列印12

1.這種方法可以再新增多個執行緒,定義好執行的順序就可以了。喚醒的時候全部喚醒。不是當前執行緒執行時還說會休眠。 public class Main { private static boo

java執行交替列印奇數偶數 別人的程式碼

1. 要列印的資源 1 package com.mytest.thread; 2 3 /** 4 * 要列印的資源 5 * 6 */ 7 public class Num { 8 int i = 1; 9 // 兩個執

java執行交替列印0-100的奇偶數

package thread; public class PrintSD { //定義列印的方法 public synchronized void print(String str){ notify(); System.out.println(str); try { w

java執行交替列印數字和字母

題目: 1.開啟兩個執行緒,一個執行緒列印A~Z,另一個執行緒列印1~52的資料。 2.實現交替列印,輸出結果為12A34B………..5152Z. 3.請用多執行緒方式實現。 使用阻塞佇列實現

一起做面試題--Java執行交替列印

這道面試題的內容是,要求兩個執行緒交替列印,打印出"12A34B56C78D910E1112F1314G1516H1718I1920J2122K2324L2526M2728N2930O3132P3334Q3536R3738S3940T4142U4344V4546W4748X

java執行:結合執行交替列印10次abc例項對wait/notify使用的徹底理解

有個朋友看點選開啟連結 裡的三個執行緒“A執行緒列印10次A,B執行緒列印10次B,C執行緒列印10次C,要求執行緒同時執行,交替列印10次ABC。” 這個問題的程式碼,有點不太理解,讓我給看下。不

Java執行交替列印

一、兩執行緒交替列印數字和字母 要求控制檯中輸出的內容為 A1B2C3D4 這應該是多執行緒面試題中推簡單的筆試題了吧; 1.Object. notify()和Object.wait()實現; private void init (){ char

java執行知識(1

基礎概念 1.執行緒和程序: 程序有自己的獨立空間,而執行緒共享程序的空間 執行緒通訊方便,同一程序的執行緒共享全域性變數,靜態資料 多程序更健壯,多執行緒只要有一個執行緒死掉,整個程序也死 2.同步和非同步:同步必須等該方法的呼叫返回 3.並行和

Java執行程式設計核心(1)

Java多執行緒程式設計核心(1) 停止執行緒 本節主要討論如何更好停止一個執行緒。停止執行緒意味著線上程處理完成任務之前放棄當前操作。 1.停不了的執行緒 可能大多數同學會使用interrupt()來停止執行緒,但是此方法並不能真的停止執行緒,僅僅是在當年執行緒中打了一個停

java執行入門案例(1)之簡單銀行取款問題及其優化

      之前學java的時候,學校老師由於課時問題,沒有教我們多執行緒,最近學校外聘的企業教師給我們做實訓要用到多執行緒,因此才初步瞭解多執行緒,以下這個案例只是介紹java程式碼優化,程式碼中有涉及多執行緒,但今天不對其講解,只簡單講解程式碼優化的問題,希望對初學

java執行:5.1 鎖-基礎

什麼是鎖 提到多執行緒,立馬就有人說加鎖,什麼是鎖,為什麼加鎖? 鎖:從字面意義,什麼東西加了鎖,那麼就只有有鑰匙的人才能使用,多執行緒中的鎖,也是這個意思。 為什麼加鎖:當單執行緒的時候,無論訪問什麼資源,都不需要考慮鎖的問題,但是當多個執行緒訪問同一個資源,就會發生很多千奇百怪的

[java]執行順序列印

package com.dongshuo.test.multithread; import javafx.beans.binding.ObjectExpression; /** * @author :dongshuo * @date : 2018/11/18 18:33 * @

Java 執行高併發 1 — 幾個重要的概念

原子性: 和物理上的原子貌似沒多大關係,對於一系列的操作只能單個執行緒做處理,不能有其他執行緒干擾,例如多個人想往同一個杯子倒茶,但只有一個茶壺,只有等這個茶壺讓出來才能繼續讓其他人倒茶 有序性:

Java執行迴圈列印ABC的5種實現方法

https://blog.csdn.net/weixin_39723337/article/details/80352783   題目:3個執行緒迴圈列印ABC,其中A列印3次,B列印2次,C列印1次,迴圈列印2輪一.Synchronized同步法思路:使用synchronized、wait、n

執行交叉列印數字執行切換結果通知思想

一道面試題,兩個執行緒交叉列印奇偶數。 這裡會運用synchronized鎖機制,wait和notifyAll方法,當然也可以使用ReentrantLock,本質鎖競爭 僅線上程需要的時候持有鎖,其餘時間檢查自身執行緒鎖,釋放執行緒自己持有的鎖。 public clas

Java執行程式設計-(1)-執行安全和鎖Synchronized概念

一、程序與執行緒的概念 (1)在傳統的作業系統中,程式並不能獨立執行,作為資源分配和獨立執行的基本單位都是程序。 在未配置 OS 的系統中,程式的執行方式

java執行---順序列印ABC的三種實現---ReentrantLock方式

使用jdk1.5併發包中引入的lock方式,這種方式使用比synchronized這種方式更加靈活,也提供了在獲取鎖時阻塞的辦法 程式碼如下: package com.zcj.thread; import java.util.concurrent.locks.Condi

Java執行場景模擬(1)

1.業務場景簡介     儲存使用者個人設定,一個使用者在a表中只能存在一條記錄,使用者修改記錄時,檢查如果該記錄存在,則修改該資料,如果該記錄不存在,則插入一條記錄。 2. 問題說明     多執行緒情況下,會出現一個使用者在表

java執行---順序列印ABC的三種實現---join方法

使用join方法,讓三個執行緒之間存在等待關係 程式碼如下: package com.zcj.join; public class JoinTest { public static voi

Java執行的死鎖活鎖飢餓

死鎖:是指兩個或兩個以上的程序(或執行緒)在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。 死鎖發生在當一些程序請求其他程序佔有的資源而被阻塞時。 死鎖發