首页 > 试题广场 >

JDK提供的用于并发编程的同步器有哪些?

[不定项选择题]
JDK提供的用于并发编程的同步器有哪些?
  • Semaphore
  • CyclicBarrier
  • CountDownLatch
  • Counter
推荐
答案:ABC
A,Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
B,CyclicBarrier 主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。
C,直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。
D,Counter不是并发编程的同步器
编辑于 2015-01-27 14:44:11 回复(22)
A.  semaphore:信号量。用于表示共享资源数量。用acquire()获取资源,用release()释放资源。
B.  CyclicBarrier  线程到达屏障后等待,当一组线程都到达屏障后才一起恢复执行
C. CountDownLatch  初始时给定一个值,每次调用countDown值减1,当值为0时阻塞的线程恢复执行
D. 不知道是啥。。。。反正不是同步器
发表于 2017-09-10 13:40:21 回复(18)
答案:ABC
     同步器是一些使线程能够等待另一个线程的对象,允许它们协调动作。最常用的同步器是CountDownLatch和Semaphore,不常用的是Barrier 和Exchanger

发表于 2015-10-02 23:16:52 回复(1)
有没有谁和我一样并不知道同步器是啥的
发表于 2017-11-13 11:48:23 回复(0)
Core Java I p696

编辑于 2019-02-21 11:58:32 回复(0)
ABC
Semaphore, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。
CyclicBarrier的线程同步障碍辅助工具类(它允许一组线程互相等待,直到到达某个公共屏障点)。

发表于 2015-01-26 19:47:32 回复(0)
  • CountDownLatch 与 CyclicBarrier的区别
  • CountDownLatch简单的说就是一个线程等待,直到他所等待的其他线程都执行完成并且调用countDown()方法发出通知后,当前线程才可以继续执行。
  • cyclicBarrier是所有线程都进行等待,直到所有线程都准备好进入await()方法之后,所有线程同时开始执行!
  • CountDownLatch的计数器只能使用一次。而CyclicBarrier的计数器可以使用reset() 方法重置。所以CyclicBarrier能处理更为复杂的业务场景,比如如果计算发生错误,可以重置计数器,并让线程们重新执行一次。
  • CyclicBarrier还提供其他有用的方法,比如getNumberWaiting方法可以获得CyclicBarrier阻塞的线程数量。isBroken方法用来知道阻塞的线程是否被中断。如果被中断返回true,否则返回false。
发表于 2018-07-10 23:44:09 回复(0)
D Counter是计数器
发表于 2015-11-24 22:18:09 回复(0)
A,B,C
发表于 2014-12-29 01:28:29 回复(0)
什么东西,看还看不懂勒,感觉学了个假的java。
发表于 2021-08-13 23:53:08 回复(2)
同步器是一些使线程能够等待另一个线程的对象,允许它们协调动作,最常用的同步器是CountDownLatch和Semaphore,不常用的是Barrier 和Exchanger
发表于 2022-03-23 11:02:30 回复(0)
A. semaphore:信号量。用于表示共享资源数 量。用acquire()获取资源,用release()释放资 源。 B. CyclicBarrier 线程到达屏障后等待,当一组 线程都到达屏障后才一起恢复执行 C. CountDownLatch 初始时给定一个值,每次 调用countDown值减1,当值为0时阻塞的线程恢 复执行
发表于 2022-02-28 22:23:52 回复(0)
完美错过正确答案。。
发表于 2017-09-06 15:32:50 回复(1)
同步器是一些使线程能够等待另一个线程的对象,允许它们协调动作。最常用的同步器是CountDownLatch和Semaphore,不常用的是Barrier 和Exchanger
发表于 2021-11-03 22:48:08 回复(0)
Semaphore:信号量,表示可以共享资源数量;用acquire()获取资源,用release()释放资源。
CyclicBarrier主要方法就是一个:await()方法被调用一次,计数减少1,并且阻塞当前线程。当计数减至0,阻塞解除,CyclicBarrier阻塞的线程开始运行
CountDown反着计数,到0之前会阻塞当前线程
Counter不是并发编程的同步器
发表于 2018-09-09 20:32:32 回复(0)
信号量可以用来限制对某个共享资源进行访问的线程的数量。在对资源进行访问之前,线程必须从得到信号量的许可(调用Semaphore对象的acquire()方法);在完成对资源的访问后,线程必须向信号量归还许可(调用Semaphore对象的release()方法)。
发表于 2017-10-06 19:36:05 回复(0)
24年学java
发表于 2024-03-28 11:33:37 回复(0)
semaphore信号量,用于表示共享资源数量,用acquire获取资源,用release释放资源 cyclicbarrier 线程达到屏障后等待,当一组线程达到屏障后都打到了之后回复执行 countdowlatch 初始化给一个值,每次地调用countdown减一,当值为0时,恢复执行
编辑于 2024-02-16 23:09:26 回复(0)
并发包没有Counter
发表于 2023-09-17 21:14:41 回复(0)
Semaphore 是初始化固定数量的令牌拿到令牌就能执行,执行完成就放令牌,下一个线程就能执行。本质上是一个限流器。
CyclicBarrier 和 CountDownLatch 是先执行完成的线程 会拿到令牌,然后阻塞等待,直到所有的线程都拿到令牌才能继续执行。这才是同步器。
编辑于 2023-03-02 10:43:42 回复(0)
同步器是一些使线程能够等待另一个线程的对象,允许它们协调动作。最常用的同步器是CountDownLatch和Semaphore,不常用的是Barrier 和Exchanger
发表于 2022-09-25 08:23:39 回复(0)