美文网首页
【并发】线程通信面试题

【并发】线程通信面试题

作者: 河神 | 来源:发表于2019-02-14 22:34 被阅读0次
image.png

我做的如下

public class T1 {

    List<Integer> list = new ArrayList<>();
    volatile  boolean flag = true;
    int i=1;
    Object o = new Object();

    public void m1(){
        while (true){
            synchronized (o){
                if(list.size()==10){
                    break;
                }
                if(list.size()<6){
                    if(!flag){
                        continue;
                    }
                }
                System.out.println("add "+i);
                list.add(i++);
                flag=false;

                if(list.size()<6){
                    try {
                        o.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

            }
        }
    }
    public void m2(){
        while (true){
            synchronized (o){
                if(!flag){
                    System.out.println(list.size());
                    flag=true;
                    o.notifyAll();
                    if(list.size()==5){
                        System.out.println("满足条件");
                        break;
                    }
                }
            }
        }
    }
    public static void main(String[] args) {
        T1 t = new T1();
        new Thread(()->t.m1()).start();
        new Thread(()->t.m2()).start();
    }

}

运行结果:


image.png

也可以使用:CountDownLatch 来做这道题

CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。

相关文章

  • 【并发】线程通信面试题

    我做的如下 运行结果: 也可以使用:CountDownLatch 来做这道题 CountDownLatch类位于...

  • java线程面试题大全

    java线程面试题大全1、15个Java线程并发面试题和答案2、15个高级Java多线程面试题及回答3、GC线程是...

  • java内存模型

    java内存模型基础 并发编程,两个关键问题:线程通信和线程同步通信机制:共享内存和消息传递 java并发采用共享...

  • 13.线程间通信

    整个《面试题》都是对[2017年6月iOS招人心得(附面试题)]的整理 1.线程间通信简介   所谓线程间的通信,...

  • JAVA进阶(4)—— 内存模型

    基础 并发编程需要处理的两个关键问题:线程通信和线程同步 线程通信 线程通信的两种方式:共享内存和消息传递 共享...

  • java线程面试题

    java线程面试题 1、[15个Java线程并发面试题和答案](http://www.wityx.com/post...

  • Java内存模型

    线程之间的通信和同步 线程之间的通信和同步是并发编程领域的关键问题。 线程之间的通信 通信是指线程之间以何种机制来...

  • Java并发教程

    Java并发教程 Java并发概述Java并发环境设置Java并发主要操作Java并发性线程间通信Java并发同步...

  • java线程面试题_2019java面试题库

    1、15个Java线程并发面试题和答案2、15个高级Java多线程面试题及回答3、GC线程是否为守护线程?4、Ha...

  • Java线程面试题 Top 50 (转载)

    Java线程面试题 Top 50 (转载) JAVA多线程和并发基础面试问答(转载)

网友评论

      本文标题:【并发】线程通信面试题

      本文链接:https://www.haomeiwen.com/subject/axfueqtx.html