面试突击49:JUC 中的 Exchange 交换器具体如何使用?

2026-05-25 18:501阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计953个文字,预计阅读时间需要4分钟。

面试突击49:JUC 中的 Exchange 交换器具体如何使用?

Exchange(交换器)命名寓意,用于实现两个线程间的数据交换。它诞生于JDK 1.5,包含两个核心方法:exchange(V x):等待另一个线程到达此交换点,然后将对象x传递给该线程。

面试突击49:JUC 中的 Exchange 交换器具体如何使用?

Exchange(交换器)顾名思义,它是用来实现两个线程间的数据交换的,它诞生于 JDK 1.5,它有两个核心方法:

  • exchange(V x):等待另一个线程到达此交换点,然后将对象传输给另一个线程,并从另一个线程中得到交换的对象。如果另一个线程未到达此交换点,那么此线程会一直休眠(除非遇了线程中断)。
  • exchange(V x, long timeout, TimeUnit unit):等待另一个线程到达此交换点,然后将对象传输给另一个线程,并从另一个线程中得到交换的对象。如果另一个线程未到达此交换点,那么此线程会一直休眠,直到遇了线程中断,或等待的时间超过了设定的时间,那么它会抛出异常。

也就是说 exchange 方法就是一个交换点,线程会等待在此交换点,直到有另一个线程也调用了 exchange 方法(相当于进入到了此交换点),这时他们会互换数据,然后执行后续的代码。

阅读全文

本文共计953个文字,预计阅读时间需要4分钟。

面试突击49:JUC 中的 Exchange 交换器具体如何使用?

Exchange(交换器)命名寓意,用于实现两个线程间的数据交换。它诞生于JDK 1.5,包含两个核心方法:exchange(V x):等待另一个线程到达此交换点,然后将对象x传递给该线程。

面试突击49:JUC 中的 Exchange 交换器具体如何使用?

Exchange(交换器)顾名思义,它是用来实现两个线程间的数据交换的,它诞生于 JDK 1.5,它有两个核心方法:

  • exchange(V x):等待另一个线程到达此交换点,然后将对象传输给另一个线程,并从另一个线程中得到交换的对象。如果另一个线程未到达此交换点,那么此线程会一直休眠(除非遇了线程中断)。
  • exchange(V x, long timeout, TimeUnit unit):等待另一个线程到达此交换点,然后将对象传输给另一个线程,并从另一个线程中得到交换的对象。如果另一个线程未到达此交换点,那么此线程会一直休眠,直到遇了线程中断,或等待的时间超过了设定的时间,那么它会抛出异常。

也就是说 exchange 方法就是一个交换点,线程会等待在此交换点,直到有另一个线程也调用了 exchange 方法(相当于进入到了此交换点),这时他们会互换数据,然后执行后续的代码。

阅读全文