面试题:常见的多线程实战手撕代码(顺序打印数字、字母)

问题一:

一个多线程的问题,用三个线程,顺序打印字母A-Z,输出结果是1A 2B 3C 1D 2E…打印完毕最后输出一个Ok。

问题二:

一个多线程的问题,用五个线程,顺序打印数字1~无穷大,其中每5个数字为1组,如下:其中id代表线程的id

id 1 2 3 4 5 
no 1 2 3 4 5 
no 6 7 8 9 10 
no 11 12 13 14 15 
no .. .. .. .. ..

博客链接:欢迎交流纠错。
#面经##实习##Android##Java#
全部评论
private static char c = 'A'; private static int i = 0; public static void main(String[] args) {             Runnable runnable = new Runnable() {            public void run() {               synchronized (this) {//加锁                 try {                     int threadId = Integer.parseInt(Thread.currentThread().getName());                     while (i < 26) {                          if (i % 3 == threadId - 1) {                              System.out.println(threadId +""+ (char) c++);                              i++;                              notifyAll();// 唤醒处于等待状态的线程                          } else {                              wait();// 释放当前锁并进入等待状态                          }                     }                 } catch (InterruptedException e) {                     e.printStackTrace();                 }               }//执行结束释放当前锁            }         };         Thread t1 = new Thread(runnable, "1");                  t1.start();         t2.start();         t3.start(); }
点赞 回复 分享
发布于 2020-03-19 15:21

相关推荐

点赞 评论 收藏
分享
评论
点赞
44
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务