- 浏览: 515594 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (268)
- C/C++ (5)
- LUA (0)
- JVM (6)
- UML (1)
- J2SE (43)
- J2EE (15)
- EXTJS (1)
- HTML5 (47)
- ANDROID (2)
- JAVASCRIPT (51)
- WEB SERVICES (0)
- 数据库 (2)
- 数据结构 (0)
- 应用服务器 (11)
- 设计模式应用 (0)
- JAVA性能与缓存 (1)
- ByteCode (5)
- RCP (0)
- Plugin (0)
- Eclipse (3)
- 程序人生 (14)
- Mobile (2)
- Linux/Ubuntu (31)
- sublime (2)
- python (15)
- Git (5)
- NodeJs (3)
- Crosswalk (1)
- Browserify (1)
- Backbone (1)
最新评论
用于实现两个线程间的数据交换,每个线程在完成一定的任务后想与对方交换数据,第一个先拿出数据的线程将一直等待第二个线程拿着数据到来时,才能彼些交换数据.
public class ExchangerTest { public static void main(String[] args) { final Exchanger<String> exchanger = new Exchanger<String>(); ExecutorService service = Executors.newCachedThreadPool(); service.execute(new Runnable() { public void run() { try { String data1 = "人民币"; System.out.println("线程" + Thread.currentThread().getName() + "正在把数据" + data1 + "换出去"); Thread.sleep((long) (Math.random() * 10000)); String data2 = exchanger.exchange(data1); System.out.println("线程" + Thread.currentThread().getName() + "换回的数据为" + data2); } catch (Exception e) { e.printStackTrace(); } } }); service.execute(new Runnable() { public void run() { try { String data1 = "白粉"; System.out.println("线程" + Thread.currentThread().getName() + "正在把数据" + data1 + "换出去"); Thread.sleep((long) (Math.random() * 10000)); String data2 = exchanger.exchange(data1); System.out.println("线程" + Thread.currentThread().getName() + "换回的数据为" + data2); } catch (Exception e) { e.printStackTrace(); } } }); service.shutdown(); } }
发表评论
文章已被作者锁定,不允许评论。
-
关于Thread.IsAlive属性
2015-07-04 12:12 882今天在讨论多线程的时候,谈到了这个属性。IsAlive,顾名 ... -
Java:对象的强、软、弱和虚引用
2015-02-28 11:00 731文章源自:http://zhangjunhd.blog.51 ... -
一个通用并发对象池的实现
2015-01-20 09:32 733Source: http://ifeve.com/gener ... -
如何创建不可变的Java类或对象
2015-01-07 16:29 2183在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过 ... -
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
2014-12-29 11:49 802文章源自:http://www.cnblogs.com/li ... -
中断线程深入
2014-12-25 15:18 795本文转自http://jiangzhengjun.itey ... -
深入java.lang.ThreadLocal类
2014-12-24 16:50 707文章源自:http://lavasoft.blog.51c ... -
Java 8新特性探究(3):解开lambda最强作用的神秘面纱
2014-07-10 17:50 709文章源自:http://developer.51cto.co ... -
Java 8特性探究(2):深入解析默认方法
2014-07-08 11:12 782文章源自:http://develop ... -
Java 8特性探究(1):通往lambda之路_语法篇
2014-07-08 09:59 689文章源自:http://developer.51cto.c ... -
java文件复制方法参考
2013-12-02 14:17 730最快的文件复制方法 private static ... -
用Java数字签名提供XML安全
2013-11-29 16:11 13134文章源自:http://www. ... -
深入理解HashMap的工作原理
2013-11-18 15:49 822HashMap的工作原理是近 ... -
JDBC4.0 驱动加载过程
2013-01-16 10:09 3634注意,jdbc4.0不再需要显示调用class.fo ... -
Java自定义的类加载器
2013-01-15 08:38 1014一、类加载器类别 * 1.java虚拟机自带的加载器 ... -
使用Log4j生成不同日志级别的日志文件
2012-12-26 17:09 5331在src根目录下存放log4j.xml文件,具体配置如下(测试 ... -
深入理解HashMap
2012-12-13 10:08 864文章摘自:http://www.iteye.c ... -
java字节码加解密
2012-06-30 09:53 1095一.创建KEY class Key { ... -
java动态代理简单实现
2012-06-30 09:45 1025一.接口 public interface Foo { ... -
线程池简单实现
2012-06-25 11:42 1096其实线程池的实现就是生产者消费者问题 的实现,理解了生产者消 ...
相关推荐
Java并发编程之同步器代码示例 ...Java并发编程之同步器代码示例展示了Java中的同步器机制,包括CountDownLatch、Semaphore、Barrier和Exchanger队列同步器等,帮助开发者更好地理解和使用Java中的并发编程技术。
- **同步器**:用于实现线程间的同步操作,常见的同步器包括`Semaphore`、`CountDownLatch`、`CyclicBarrier`、`Exchanger`和`Phaser`等。 - **执行器**:用于管理和控制线程的执行,如`ExecutorService`等。 - **...
本文将深入解析四种主要的同步器:CountDownLatch、Semaphore、Barrier和Exchanger,并通过代码示例进行讲解。 1. **CountDownLatch** CountDownLatch是一个计数器,通常用于一次性事件,如等待所有线程完成某个...
- **AQS同步队列**:AbstractQueuedSynchronizer,提供了一个框架来实现锁和同步器。 - **CAS无锁的概念**:Compare and Swap,乐观锁的一种实现。 - **常见的原子操作类**:AtomicInteger、AtomicLong等。 - **...
- 同步锁机制通过监视器锁(Monitor)实现,每个对象都有一个内置锁,即监视器。 3. **Java并发工具包JUC**: - JUC包含了许多高级并发组件,如`Semaphore`信号量、`CyclicBarrier`回环栅栏、`CountDownLatch`倒...
除了原子量和同步器,JDK并发包还提供了显式锁,如ReentrantLock,它提供了比synchronized更灵活的控制,包括公平锁和非公平锁,以及可中断的锁等待和定时锁等待。 总之,JDK并发包为开发者提供了丰富的工具来处理...
Java5的Exchanger同步工具 - `Exchanger`可以实现线程间的双向交换。 ##### 18. Java5阻塞队列的应用 - 阻塞队列(`BlockingQueue`)提供了一种线程安全的队列实现。 ##### 19. Java5同步集合类的应用 - 同步集合类...
5. **并发工具类**:Java并发包(java.util.concurrent)中包含许多工具类,如Semaphore(信号量)、CountDownLatch(倒计时锁)、CyclicBarrier(回环栅栏)和Exchanger(交换器),它们是设计复杂多线程同步场景的...
- 并发工具类:Semaphore、CyclicBarrier、CountDownLatch、Exchanger 5. **JVM相关**: - 类加载机制(加载、验证、准备、解析、初始化) - 垃圾收集算法(标记-清除、复制、标记-整理、分代收集) - 堆内存...
- **线程的创建与同步**:通过Thread类、Runnable接口创建线程,synchronized关键字,wait/notify机制。 - **线程池**:ExecutorService,ThreadPoolExecutor的配置与使用。 - **并发工具类**:Semaphore、...
为了保持数据同步,需要在中心传输服务器上运行Start-EdgeSynchronization命令,然后使用Test-EdgeSynchronization命令检查同步状态。在这一阶段,可能需要删除之前为中心服务器建立的到Internet的发送连接器,因为...
** 如CountDownLatch、CyclicBarrier、Semaphore、Exchanger、Phaser等,用于线程间的协作。 10. **线程安全** - **什么是线程安全?** 多线程环境下,类的行为正确且结果一致。 - **如何实现线程安全?** 使用...
- 线程同步机制:synchronized关键字、wait/notify机制、ReentrantLock等。 - 线程池的理解与使用:ExecutorService、ThreadPoolExecutor、ScheduledThreadPoolExecutor。 4. **IO流与NIO**: - IO流的分类:...
- 理解线程同步机制:synchronized关键字,wait(), notify(), notifyAll()方法。 - 掌握并发工具类(Semaphore, CyclicBarrier, CountDownLatch, Exchanger等)。 6. **反射**: - 学习Class类,以及如何通过...
- 理解并发工具类,如Semaphore、CountDownLatch、CyclicBarrier、Exchanger等。 7. **IO流** - 理解字节流和字符流的区别,掌握FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等常用流的...