- 浏览: 59255 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
shifulong:
cywhoyi 写道现在用Javassist代理也不错的看了一 ...
java动态代理(jdk &cglib) -
cywhoyi:
现在用Javassist代理也不错的
java动态代理(jdk &cglib)
Exchanger 用于线程之间数据交换,通过exchanger.exchange(obj) 这个方法交换
如果第一个线程执行到exchange方法,它会等待第二个线程也执行到exchange,
当两个线程都执行到同步点时,这两个线程就可以交换数据。
个人感觉可以做生产者和消费者呢,什么时候交换要有个交换策略的哈。
执行结果
brfore exchange : A , after exchange : B
brfore exchange : B , after exchange : A
如果第一个线程执行到exchange方法,它会等待第二个线程也执行到exchange,
当两个线程都执行到同步点时,这两个线程就可以交换数据。
个人感觉可以做生产者和消费者呢,什么时候交换要有个交换策略的哈。
package com.test.uuu; import java.util.concurrent.Exchanger; public class ExchangerTest { public static void main(String[] args) { Exchanger exchanger = new Exchanger(); new Thread(new ExchangeRunnable(exchanger, "A")).start(); new Thread(new ExchangeRunnable(exchanger, "B")).start(); } static class ExchangeRunnable implements Runnable { private Exchanger exchanger; private Object obj; public ExchangeRunnable(Exchanger exchanger, Object obj) { this.exchanger = exchanger; this.obj = obj; } public void run() { Object currentObj = this.obj; try { this.obj = exchanger.exchange(this.obj); System.out.printf("brfore exchange %s , after exchange %s \n", currentObj, this.obj); } catch (InterruptedException e) { e.printStackTrace(); } } } }
执行结果
brfore exchange : A , after exchange : B
brfore exchange : B , after exchange : A
发表评论
-
test
2016-02-26 17:45 487http://c.hiphotos.baidu.com/t ... -
java Integer的比较
2016-01-18 20:09 1076/** * A constant ... -
load过高排查
2016-01-07 19:15 1134jstack 线程的运行情况、线程的状态 load过高的 ... -
Runnable Callable Future FutrueTask ExecutorService的关系
2015-11-30 16:34 702public interface ExecutorSe ... -
单例模式以及序列化仍然单例的问题
2015-11-18 10:47 588这种方式仍然存在并发的同步阻塞问题,并且jdk1.5之 ... -
linux5种网络IO模型
2015-11-07 21:58 896看网上书上的各种解释太绕口难理解了,看到个例子挺好的。 ... -
nio学习记录 : start(buffer channel selector)
2015-11-06 22:17 757Buffer的capacity,limit,positio ... -
desgn partten : 适配器&门面
2015-11-05 11:55 615adapter adapter 一个接口转换成另一个接 ... -
java泛型中的PECS
2015-10-26 17:58 1028extends List<? extends Nu ... -
spring自定义cache
2015-10-21 17:14 4559下面是一个较为详细的spring缓存的介绍 http:/ ... -
spring各种接口的作用FactoryBean、ApplicationContextAware、InitializingBean
2015-10-20 20:04 3044FactoryBean 当配置文件中<bean&g ... -
jvm调试命令
2015-10-14 15:42 508jps jps -mlv 列出当前jvm进程 ji ... -
CAS自定义线程安全的计数器
2015-10-10 17:36 2210写了一个线程安全的计数器(用锁显得多没有水平),非阻塞的,通过 ... -
java线程遇见的一个小问题(本质和线程无关都是基础知识)
2015-09-21 10:29 570猜猜下面几个程序,那个是线程安全的 NO1 public cl ... -
JUC--Parser
2015-09-08 16:27 693Java 7的并发包中推出了Phaser,其功能跟Cyclic ... -
java浮点型float遇到的一点问题
2015-04-10 16:32 686float 可以除以0,还可以不是一个数字 即Float.is ... -
java静态块的一个小坑
2015-04-07 18:26 660public class Student { pr ... -
java学习计划
2015-04-07 17:57 442刚入职的时候,team大神给制定的学习计划。 受益匪浅啊 ... -
购物网站(spring+mybatis+velocity+maven)项目
2015-04-03 18:06 1013原文地址: http://www.iteye.com/top ... -
synchronized与static synchronized 的区别
2015-03-25 18:51 723基本上每个面试都问到了,面试命中率很大。 public cl ...
相关推荐
《JUC:Java并发编程的艺术》 在Java世界中,JUC(Java Util Concurrency)是并发编程的核心库,它提供了丰富的并发工具类,帮助开发者有效地处理多线程和高并发场景。JUC库是Java 5引入的一个重大改进,大大简化了...
此外,还有如ScheduledExecutorService用于定时任务,BlockingQueue用于生产者消费者模型,以及 Phaser 和 Exchanger 这些复杂场景下的并发工具。 总之,《狂神多线程+juc》资料包涵盖了Java并发编程的两大核心领域...
本篇内容将详细介绍JUC中的一些核心组件及其使用方法,包括CountDownLatch、Executors、Semaphore、Exchanger、CyclicBarrier、LinkedBlockingQueue、ThreadFactory等。 首先,我们来探讨一下Executors工具类。...
5. **并发工具类**:包括CountDownLatch、CyclicBarrier、Semaphore、Exchanger等,这些工具可以帮助开发者协调多个线程间的协作,实现复杂的并发控制逻辑。 6. **Future和CompletableFuture**:讲解如何使用Future...
- JUC包含了许多高级并发组件,如`Semaphore`信号量、`CyclicBarrier`回环栅栏、`CountDownLatch`倒计时器和`Exchanger`交换器等,它们可以帮助控制线程的执行顺序。 - `Semaphore`可以限制同时访问特定资源的线程...
4.4 Exchanger 第五章:原子类和无锁编程 5.1 AtomicInteger与AtomicLong 5.2 AtomicReference 第六章:线程池及其应用 6.1 ThreadPoolExecutor 6.2 ScheduledThreadPoolExecutor 第七章:Fork/Join框架 ...
6. **并发工具类**:`CountDownLatch`、`CyclicBarrier`、`Semaphore`和`Exchanger`等,它们提供了一种同步机制,用于控制多个线程的并发行为。例如,`CountDownLatch`用于一次性释放多个线程,`CyclicBarrier`则...
它包含了诸如Semaphore(信号量)、CyclicBarrier(回环屏障)、CountDownLatch(倒计时器)和Exchanger(交换器)等高级同步工具。通过研究这些类的源码,开发者可以学习到如何编写线程安全的代码,提高多线程环境...
6. 并发控制和总结:J.U.C中还包括了Exchanger用于线程间交换数据,以及并发控制中的常见问题如死锁、性能与伸缩性等。开发者需要理解并避免这些问题,以保证程序的正确性和效率。 通过J.U.C,Java开发者可以更加...
4. **并发工具类**:学习Semaphore(信号量)、CyclicBarrier(回环栅栏)、CountDownLatch(倒计时器)和Exchanger(交换器)等工具类,以及如何在实际项目中应用。 5. **线程池**:理解ExecutorService、...
7. **并发工具类**: `CountDownLatch`、`CyclicBarrier`、`Semaphore` 和 `Exchanger` 提供了线程间的同步和协调机制。例如,CountDownLatch常用于一次性事件,而CyclicBarrier则允许一组线程等待所有线程到达屏障点...
Java高并发第三阶段(JUC).png 高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv 高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv 高并发编程第三阶段03讲 利用CAS构造一...
Java高并发第三阶段(JUC).png 高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv 高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv 高并发编程第三阶段03讲 利用CAS构造一...
13. **JUC并发工具类**:如Semaphore、CyclicBarrier、CountDownLatch、Exchanger等,它们可以帮助解决复杂的并发问题。 在准备Java面试时,不仅要理解这些概念,还需要通过实际编程练习来增强应用能力。熟悉这些...
4. **并发包JUC(Java Util Concurrency)**:JUC是Java提供的高级并发工具包,包含如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)、Exchanger(交换器)等工具类,它们简化了多线程...
java.util.concurrent(JUC)包包含了一系列高级并发工具,如Semaphore(信号量)、CyclicBarrier(回环屏障)、CountDownLatch(计数器门锁)和Exchanger(交换器),它们提供了更复杂的同步机制。另外,...
同步器是用于协调多个线程之间协作机制的工具,Java并发包中提供了CountDownLatch、Semaphore、Exchanger、CyclicBarrier等同步器,它们可以在复杂的并发场景中提供高效的线程间同步。 在并发编程实践中,还提到了...