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