zoukankan      html  css  js  c++  java
  • 多线程刷题

    1.FirstSecondThird按序打印:控制条件使second在first之后打印,third在second之后打印,用CountDwonLatch实现,可以创建两个CountDownLatch,调用CountDownLatch的await()使当前线程阻塞,因为CountDownLatch的await()是使当前线程一直阻塞直到该CountDownLatch的getCount()==0,而每一次调用CountDownLatch的countDown()都会使getCount()的返回值减1.

    2.Foo和Bar交替打印,且Foo要在Bar之前。可以使Foo拥有一个控制Bar执行的变量,由于根据传入的num可能要交替多次执行,就需要他们两互相拥有控制对方执行的变量,且一定使Foo先符合条件。在CountDownLatch,Semphore,CyclicBarrier这三个中,选择用Semphore,因为昨天刚好看了这些个文章。需要注意的使Semphore的acquire()方法,是消耗一个信号来执行,没有信号可以消耗则阻塞,而release是释放,也就是对Semphore增加一个信号量。所以让Foo和Bar分别拥有一个Semphore控制对方执行,先让Foo符合条件,则定义一个new SemphoreFoo(1)给Foo使用,一个new SemhoreBar()给bar使用,两个线程同样在第一行代码调用acquire()消耗一个信号量执行下面的其他代码,但只有Foo有一个信号量,Foo执行之后,然后调用semphoreBar.release()给semphoreBar一个信号量,使Bar从SemphoreBar.acqure()无法获取信号量的阻塞装态中退出,bar再给foo一个信号量,如此反复,就可以交替循环执行了。

    ------------------------------------------------------2020-11-12

  • 相关阅读:
    底图与蒙版的过渡效果transition
    消除blur属性的边框
    jquery ajax实例教程和一些高级用法
    常用js正则表达式大全
    HTML5 + JS 调取摄像头拍照下载
    JS运动框架
    JS 实现AJAX封装(只限于异步)
    事件委托详解
    JS 实现随机验证码功能
    利用JS调取电脑摄像头,实现拍照功能
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/13960668.html
Copyright © 2011-2022 走看看