Java线程(练习题)
创始人
2024-11-14 15:35:00
0

Exercise

创建三个线程:一个线程打印 100个A,一个线程打印 100 个 B ,一个线程打印 100个C 输出效果:ABC ABC ABC…交替打印

package com.kane.exercise01;  public class PrintABC implements Runnable {      private static final Object lock = new Object();     private static int state = 0;      private String str;     private int num;      public PrintABC(String str, int num) {         this.str = str;         this.num = num;     }      @Override     public void run() {         for (int i = 0; i < 100; i++) {             synchronized (lock) {                 while (state % 3 != num) {                     try {                         lock.wait();                     } catch (InterruptedException e) {                         e.printStackTrace();                     }                 }                 System.out.print(str);                 state++;                 lock.notifyAll(); // 唤醒其他线程             }             if(state%3 == 0) {                 System.out.println("");             }         }     } }   
package com.kane.exercise01;  public class Demo1 {     public static void main(String[] args) {         Thread t1 = new Thread(new PrintABC("A",0));         Thread t2 = new Thread(new PrintABC("B",1));         Thread t3 = new Thread(new PrintABC("C",2));         t1.start();         t2.start();         t3.start();     } }  

编写两个线程,一个 线程打印1-52,另一个线程打印字母A-Z打印顺序是12A34B…,即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印

package com.kane.exercise02;  import java.util.concurrent.Semaphore;  public class Demo {     private static final Semaphore Numbersemaphore = new Semaphore(1);     private static final Semaphore Dansemaphore = new Semaphore(0);      public static void main(String[] args) {         Thread t1 = new Thread(new NumberPrint());         Thread t2 = new Thread(new DanPrint());         t1.start();         t2.start();     }      static class NumberPrint implements Runnable {          @Override         public void run() {             for (int i = 1; i < 53; i++) {                 try {                     Numbersemaphore.acquire();                     System.out.print(i + " ");                     if (i%2== 0) {                         Dansemaphore.release();                     } else {                         Numbersemaphore.release();                     }                 } catch (InterruptedException e) {                     throw new RuntimeException(e);                 }             }         }     }     static class DanPrint implements Runnable {          @Override         public void run() {             for (char c = 'A'; c <= 'Z'; c++) {                 try {                     Dansemaphore.acquire();                     System.out.print(c);                     System.out.println("");                     Numbersemaphore.release();                 } catch (InterruptedException e) {                     Thread.currentThread().interrupt();                 }             }         }     }  }  

相关内容

热门资讯

第2分钟操作!圣游科技辅助器,... 第2分钟操作!圣游科技辅助器,随意玩房卡辅助器透视(辅助)本来有挂平台(哔哩哔哩)1、随意玩房卡辅助...
五分钟手筋!好友赣南新版本挂,... 您好,好友赣南新版本挂这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩...
五分钟手筋!贰柒拾智能辅助柒,... 五分钟手筋!贰柒拾智能辅助柒,新广西老友辅助(辅助)其实存在有插件(哔哩哔哩)进入游戏-大厅左侧-新...
7分钟举措!丫丫衡阳字牌3辅助... 7分钟举措!丫丫衡阳字牌3辅助,樱花之盛辅助器下载(辅助)一贯是真的平台(哔哩哔哩)1、7分钟举措!...
第3分钟教程书!掌电竞技辅助器... 第3分钟教程书!掌电竞技辅助器,悟空大厅辅助器(辅助)一贯是有辅助器(哔哩哔哩)1)掌电竞技辅助器辅...
第2分钟法子!哈糖大菠萝可以开... 第2分钟法子!哈糖大菠萝可以开挂吗,悟空大厅辅助器下载(辅助)确实真的是有软件(哔哩哔哩)1、进入到...
第五分钟机巧!闲逸软件可以控制... 第五分钟机巧!闲逸软件可以控制的吗,新众亿挂机(辅助)都是是有神器(哔哩哔哩)第五分钟机巧!闲逸软件...
1分钟绝活!悠闲卡五星辅助,来... 1分钟绝活!悠闲卡五星辅助,来来拼十辅助(辅助)本来存在有下载(哔哩哔哩)1、悠闲卡五星辅助免费脚本...
第4分钟技法!边锋干瞪眼小程序... 第4分钟技法!边锋干瞪眼小程序辅助,道游互娱辅助免费版(辅助)本来真的有辅助器(哔哩哔哩)1、玩家可...
脚本曝光!hhpoker俱乐部... 脚本曝光!hhpoker俱乐部是干嘛的,hhpoker辅助软件(透视)切实真的有神器(哔哩哔哩)1、...