当前位置: 首页 > news >正文

中国建设教育协会官方网站查seo研究中心vip课程

中国建设教育协会官方网站查,seo研究中心vip课程,江苏国龙翔建设网站.,亳州电子商务网站建设公司前言JDK中为了处理线程之间的同步问题#xff0c;除了提供锁机制之外#xff0c;还提供了几个非常有用的并发工具类#xff1a;CountDownLatch、CyclicBarrier、Semphore、Exchanger、Phaser#xff1b;  CountDownLatch、CyclicBarrier、Semphore、Phaser 这四个工具类提…前言  JDK中为了处理线程之间的同步问题除了提供锁机制之外还提供了几个非常有用的并发工具类CountDownLatch、CyclicBarrier、Semphore、Exchanger、Phaser  CountDownLatch、CyclicBarrier、Semphore、Phaser 这四个工具类提供一种并发流程的控制手段而Exchanger工具类则提供了在线程之间交换数据的一种手段。简介   Exchanger的功能是使2个线程之间交换数据有不少文章的说法是“传输数据”应该叫“交换数据”更合适因为这是两个线程都要向对方传送数据同时也获取对方的传送过来的数据是双向模式并不是一个线程向另一个线程传输数据。它比生产者/消费者模式使用的wait/notify要更加方便。  Exchanger 提供一个同步点在这个同步点处两个线程可以交换彼此数据。即一个线程调用了exchange( )方法交换数据到达了同步点然后就会一直阻塞等待另一个线程调用exchange( )方法来交换数据。所以要注意exchange( )方法是有阻塞的特性。Exchanger 可能在应用程序比如遗传算法和管道设计中很有用。方法摘要public V exchange(V x) throws InterruptedException等待另一个线程到达此交换点除非当前线程被中断然后将给定的对象传送给该线程并接收该线程的对象。public V exchange(V x, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException等待另一个线程到达此交换点除非当前线程被中断或者超出了指定的等待时间然后将给定的对象传送给该线程同时接收该线程的对 Example1 用法示例以下是重点介绍的一个类该类使用 Exchanger 在线程间交换缓冲区因此在需要时填充缓冲区的线程获取一个新腾空的缓冲区并将填满的缓冲区传递给腾空缓冲区的线程class FillAndEmpty {ExchangerDataBuffer exchanger new ExchangerDataBuffer();DataBuffer initialEmptyBuffer ... a made-up typeDataBuffer initialFullBuffer ...class FillingLoop implements Runnable {public void run() {DataBuffer currentBuffer initialEmptyBuffer;try {while (currentBuffer ! null) {addToBuffer(currentBuffer);if (currentBuffer.isFull())currentBuffer exchanger.exchange(currentBuffer);}} catch (InterruptedException ex) { ... handle ... }}}class EmptyingLoop implements Runnable {public void run() {DataBuffer currentBuffer initialFullBuffer;try {while (currentBuffer ! null) {takeFromBuffer(currentBuffer);if (currentBuffer.isEmpty())currentBuffer exchanger.exchange(currentBuffer);}} catch (InterruptedException ex) { ... handle ...}}}void start() {new Thread(new FillingLoop()).start();new Thread(new EmptyingLoop()).start();}} 复制代码 Example2 应用场景示例Exchanger可以用于遗传算法遗传算法里需要选出两个人作为交配对象这时候会交换两人的数据并使用交叉规则得出2个交配结果。Exchanger也可以用于校对工作。比如我们需要将纸制银流通过人工的方式录入成电子银行流水为了避免错误采用AB岗两人进行录入录入到Excel之后系统需要加载这两个Excel并对这两个Excel数据进行校对看看是否录入的一致。代码如下private static final ExchangerString exgr new ExchangerString(); private static ExecutorService threadPool Executors.newFixedThreadPool(2);public static void main(String[] args) {threadPool.execute(new Runnable() {Overridepublic void run() {try {String A 银行流水A;// A录入银行流水数据exgr.exchange(A);//同步点交换数据} catch (InterruptedException e) {}}});threadPool.execute(new Runnable() {Overridepublic void run() {try {String B 银行流水B;// B录入银行流水数据String A exgr.exchange(B);//同步点交换数据System.out.println(A和B数据是否一致 A.equals(B) \nA录入的是 A \nB录入的是 B);} catch (InterruptedException e) {}}});threadPool.shutdown(); } 复制代码运行结果A和B数据是否一致false A录入的是银行流水A B录入的是银行流水B 复制代码文章源地址https://www.cnblogs.com/jinggod/p/8494384.html
http://www.yutouwan.com/news/304063/

相关文章:

  • 徐州网站关键词wordpress导航自定义
  • 上海外包公司网站建设平面设计公司创业计划书
  • 手机 网站 开发广州建网站白云区
  • 微网站建设制作wordpress电影网站主题
  • 网站开发服务转包合同范本特产网站建设的目的
  • 招远专业做网站公司万网是做网站的吗
  • 网站维护服务简述网站的制作步骤
  • nas网站怎么做网站网站建设横幅标语
  • 分类信息网站系统cms免费自助建下下载
  • 做网站cookie传值wordpress主机建站
  • 健身会所网站模板做视频教学网站
  • 江苏建设官方网站国外美容院网站
  • 网站四对联广告代码开设一个网站的费用
  • 青海企业网站制作设计网站国外
  • 青岛网站建设全包网站平台建设心得
  • 手游传奇新开服网站网站建设策划方案怎么写
  • 石碣镇网站仿做网站公司怎么做运营商
  • 青岛百度seo排名电商运营seo
  • 北京网站制作与网站设计怎么给网站带来流量
  • 怎样自己做网站卖钱青岛网站建设推广优化
  • 朝阳网站制作公司河南省建设厅网站103号文件
  • 电商网站开发的难点在哪里怎么卸载安装好的wordpress
  • 哪些域名不能够做淘宝客网站WordPress目录存放大小
  • 做查询网站有哪些建立网站英文翻译
  • 开设网站的费用石家庄网络营销哪家好做
  • 网站推广有什么方法有哪些邮箱注册网址
  • 广东seo网站优化公司手机 网站 翻页 外部
  • 如何关闭网站泰州住房和城乡建设网站
  • 兰州公司网站制作沈阳网站搭建
  • 公司网站维护好做吗优化推广网站怎么做