经典多线程面试题

题目:子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程100次,如此循环50次,请写出程序。

1publicclass TraditionalThreadSynchronized2 { 2publicstaticvoidmain(String[] args)throws Exception { 3Demo1 d1 =new Demo1(); 4// 子线程 5newThread(new Runnable() { 6 7            @Override 8publicvoid run() { 9for(inti = 1; i <= 50; i++) {10try {11                        d1.sub(i);12}catch (InterruptedException e) {13// TODO Auto-generated catch block14                        e.printStackTrace();15                    }16                }17            }18        }).start();1920// 主线程21for(inti = 1; i <= 50; i++) {22            d1.main(i);23        }2425    }26}2728class Demo1 {29publicBoolean mainDoIt =false;标志主线程方法是否被调用30// 子线程循环10次31publicsynchronizedvoidsub(inti)throws InterruptedException {32while(mainDoIt) {33this.wait();34        }35for(intj = 1; j <= 10; j++) {36System.out.println("sub" + j + "---SUB" + i);37        }38mainDoIt=true; //子线程调用完毕39this.notify();// 唤醒主线程40    }4142// 主线程循环100次43publicsynchronizedvoidmain(inti)throws InterruptedException {44while(!mainDoIt) {45this.wait();46        }47for(intj = 1; j <= 100; j++) {48System.out.println("main" + j + "---MAIN" + i);49        }50mainDoIt =false;//主线程调用完毕51this.notify();// 唤醒子线程5253    }54}

解题思路:子线程语主线程为互斥,可用SYNCHRONIZED。为了体现Java 的高类聚性,最好能将共同数据或共同方法归为同一类,即编写一个类来存放两个同步方法。要让他们交替进行,可用信号量控制,并用wait  ,notify 进行线程间通信。                                                                                                                                            欢迎工作一到五年的Java工程师朋友们加入Java群: 891219277

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 5,244评论 0 6
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 10,536评论 0 23
  • 上一篇,我们给出了大概35个题目,都是基础知识,有童鞋反映题目过时了,其实不然,这些是基础中的基础,但是也是必不可...
    独念白阅读 1,690评论 0 2
  • 图文/神扯的绿米 有朋友最近很疑惑,觉得在公司团队里没找到自己合适的位置,这让我想到了一个比赛项目:接力赛跑。未入...
    神扯的绿米阅读 9,661评论 0 6
  • 不上路,永远不知道路上的风景 时朝丽老师说:一个人可以改变一个甚至几个区域,一粒种子可以长成参天大树。陈权校长带着...
    沂南042孟祥平阅读 3,101评论 0 2