Exchanger 线程之间数据传输
来源:互联网 发布:nginx 访问不同目录 编辑:程序博客网 时间:2024/06/16 02:36
java Exchanger类用于在线程之间传输数据
class ExchangeOne implements Runnable{ Exchanger<String> exchanger; public ExchangeOne(Exchanger<String> exchanger){ this.exchanger=exchanger; } @Override public void run() { try { String one="one"; System.out.println("thread id:"+Thread.currentThread().getId()+",before value:one,date:"+new Date()); String afterValue=exchanger.exchange(one); System.out.println("thread id:"+Thread.currentThread().getId()+",after value:"+afterValue+",date:"+new Date()); } catch (InterruptedException e) { e.printStackTrace(); } }}
class ExchangeTwo implements Runnable{ Exchanger<String> exchanger; public ExchangeTwo(Exchanger<String> exchanger){ this.exchanger=exchanger; } @Override public void run() { try { Thread.sleep(2000); String one="two"; System.out.println("thread id:"+Thread.currentThread().getId()+",before value:two,date:"+new Date()); String afterValue=exchanger.exchange(one); System.out.println("thread id:"+Thread.currentThread().getId()+",after value:"+afterValue+",date:"+new Date()); } catch (InterruptedException e) { e.printStackTrace(); } }}
public static void main(String[] args) { Exchanger<String> exchanger=new Exchanger<>(); new Thread(new ExchangeOne(exchanger)).start(); new Thread(new ExchangeTwo(exchanger)).start(); }
执行结果:
thread id:11, before value:one, date:Wed Jul 19 16:07:15 GMT+08:00 2017
thread id:12, before value:two, date:Wed Jul 19 16:07:17 GMT+08:00 2017
thread id:12, after value:one, date:Wed Jul 19 16:07:17 GMT+08:00 2017
thread id:11, after value:two, date:Wed Jul 19 16:07:17 GMT+08:00 2017
thread11第一次运行时 second是 15,交换数据后是 17, 因为 thread12休眠了2秒
阅读全文
0 0
- Exchanger 线程之间数据传输
- exchanger 线程之间交换数据
- jdk5 Exchanger 线程之间数据交换
- jdk5 Exchanger 线程之间数据交换
- Exchanger两个线程之间交换数据
- Exchanger两个线程之间的数据交换
- 线程之间Exchanger通信简例
- Exchanger 实现两个伙伴线程之间的数据交互
- Java多线程之~~~使用Exchanger在线程之间交换数据
- 线程之间的数据传输之AsyncTask
- 控制并发线程数的Semaphore和线程之间的数据交换Exchanger
- Java线程之Exchanger
- Exchanger:线程交换数据
- java线程之Exchanger
- 线程并发工具--Exchanger
- java线程Exchanger
- Exchanger线程拷贝
- 线程转换类Exchanger
- 静态化缓存-access_token
- POJ1985 Cow Marathon
- FindBugs使用
- java使用poi导出excel的内容,同时可以利用反射进行动态获取信息
- 3.3 索引与切片
- Exchanger 线程之间数据传输
- 数据库的设计
- Android7.0 & 8.0 Language Settings 定制
- 博弈论学习笔记
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files没有权限--完美解决
- SPOJ DQUERYD-query(离线线段树,查区间不同数字个数)
- 正则 re.search 最短匹配
- Struts2(十四):类型转换
- python问题Non-ASCII character '\xe5' in file Apriori.py on line 1, but no encoding declared 解决办法