Java多線(xiàn)程應(yīng)用循環(huán)輸出ABC方式
Java 多線(xiàn)程應(yīng)用循環(huán)輸出ABC
有三個(gè)線(xiàn)程ID分別是A、B、C,請(qǐng)用多線(xiàn)編程實(shí)現(xiàn),在屏幕上循環(huán)打印10次ABCABC
請(qǐng)補(bǔ)充以下代碼
public class Test { public static void main(String[] args) { MajusculeABC maj = new MajusculeABC(); Thread t_a = new Thread(new Thread_ABC(maj , 'A')); Thread t_b = new Thread(new Thread_ABC(maj , 'B')); Thread t_c = new Thread(new Thread_ABC(maj , 'C')); t_a.start(); t_b.start(); t_c.start(); } } class MajusculeABC { 請(qǐng)補(bǔ)充代碼 } class Thread_ABC implements Runnable { 請(qǐng)補(bǔ)充代碼 }
答案如下
public class ThreadTest { public static void main(String[] args) throws InterruptedException { MajusculeABC maj = new MajusculeABC(); Thread t_a = new Thread(new Thread_ABC(maj , 'A')); Thread t_b = new Thread(new Thread_ABC(maj , 'B')); Thread t_c = new Thread(new Thread_ABC(maj , 'C')); t_a.start(); t_b.start(); t_c.start(); } private static class MajusculeABC { // 請(qǐng)補(bǔ)充代碼 public MajusculeABC() { } private int a = 1; private synchronized void print(int index, char s) throws InterruptedException { do { if (s == 'A' && a == 1) { a++; System.out.println(index+"---" + s); notifyAll(); break; } else if (s == 'B' && a == 2) { a++; System.out.println(index+"---" + s); notifyAll(); break; } else if (s == 'C' && a == 3) { a = 1; System.out.println(index+"---" + s); notifyAll(); break; } else { wait(); } } while (true); } } private static class Thread_ABC implements Runnable { private char s; private MajusculeABC majusculeABC; // 請(qǐng)補(bǔ)充代碼 public Thread_ABC(MajusculeABC majusculeABC, char s) { this.majusculeABC = majusculeABC; this.s = s; } @Override public void run() { for (int i = 0; i < 10; i++) { try { majusculeABC.print(i, s); } catch (InterruptedException e) { e.printStackTrace(); } } } } }
輸出如下:
0---A
0---B
0---C
1---A
1---B
1---C
2---A
2---B
2---C
3---A
3---B
3---C
4---A
4---B
4---C
5---A
5---B
5---C
6---A
6---B
6---C
7---A
7---B
7---C
8---A
8---B
8---C
9---A
9---B
9---C
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java常用的數(shù)據(jù)脫敏方法(手機(jī)、郵箱、身份證號(hào))
這篇文章主要給大家介紹了關(guān)于Java常用的數(shù)據(jù)脫敏(手機(jī)、郵箱、身份證號(hào))的相關(guān)資料,信息脫敏對(duì)某些敏感信息通過(guò)脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù),需要的朋友可以參考下2023-07-07mybatis?plus?MetaObjectHandler?不生效的解決
今天使用mybatis-plus自動(dòng)為更新和插入操作插入更新時(shí)間和插入時(shí)間,配置了MetaObjectHandler不生效,本文就來(lái)解決一下,具有一定的 參考價(jià)值,感興趣的可以了解一下2023-10-10Spring Boot基于Active MQ實(shí)現(xiàn)整合JMS
這篇文章主要介紹了Spring Boot基于Active MQ實(shí)現(xiàn)整合JMS,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Java將網(wǎng)絡(luò)圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream問(wèn)題
這篇文章主要介紹了Java將網(wǎng)絡(luò)圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Java進(jìn)階學(xué)習(xí):網(wǎng)絡(luò)服務(wù)器編程
Java進(jìn)階學(xué)習(xí):網(wǎng)絡(luò)服務(wù)器編程...2006-12-12Java中通過(guò)反射實(shí)現(xiàn)代理Proxy代碼實(shí)例
這篇文章主要介紹了Java中通過(guò)反射實(shí)現(xiàn)代理Proxy代碼實(shí)例,java實(shí)現(xiàn)代理可以通過(guò)java.lang.reflect.Proxy接口結(jié)合java.lang.reflect.InvocationHandler來(lái)實(shí)現(xiàn),需要的朋友可以參考下2023-08-08Spring注解@Transactional失效的場(chǎng)景分析
在使用Spring中事務(wù)注解@Transactional時(shí)會(huì)存在幾種場(chǎng)景下該注解失效,即不能按照預(yù)期封裝成一個(gè)事務(wù)操作,于是本文文將對(duì)該注解進(jìn)行學(xué)習(xí)并對(duì)相關(guān)失效場(chǎng)景進(jìn)行分析,需要的朋友可以參考下2023-07-07Java多線(xiàn)程——之一創(chuàng)建線(xiàn)程的四種方法
這篇文章主要介紹了Java創(chuàng)建線(xiàn)程方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04SpringBoot利用EasyExcel實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)
EasyExcel是一個(gè)基于Java的、快速、簡(jiǎn)潔、解決大文件內(nèi)存溢出的Excel處理工具,它能讓你在不用考慮性能、內(nèi)存的等因素的情況下,快速完成Excel的讀、寫(xiě)等功能看,本文就將介紹如何利用EasyExcel實(shí)現(xiàn)導(dǎo)出數(shù)據(jù),需要的朋友可以參考下2023-07-07