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

网站建设答辩ppt要点电子商务网站建设有什么认识

网站建设答辩ppt要点,电子商务网站建设有什么认识,网站做影集安全吗,网站外链建设需要考核1.概述 java.util.concurrent.Exchanger。这在Java中作为两个线程之间交换对象的公共点。 2.Exchanger简介 Exchanger类可用于在两个类型为T的线程之间共享对象。该类仅提供了一个重载的方法exchange(T t)。 当调用exchanger时#xff0c;它会等待成对的另一个线程也调用它…1.概述 java.util.concurrent.Exchanger。这在Java中作为两个线程之间交换对象的公共点。 2.Exchanger简介 Exchanger类可用于在两个类型为T的线程之间共享对象。该类仅提供了一个重载的方法exchange(T t)。 当调用exchanger时它会等待成对的另一个线程也调用它。在这一点上第二个线程发现第一个线程正在等待其对象。线程交换它们持有的对象并发出交换信号然后它们可以返回。 让我们看一个例子以理解两个线程之间使用Exchanger进行消息交换 Test public void givenThreads_whenMessageExchanged_thenCorrect() {ExchangerString exchanger new Exchanger();Runnable taskA () - {try {String message exchanger.exchange(from A);assertEquals(from B, message);} catch (InterruptedException e) {Thread.currentThread().interrupt();throw new RuntimeException(e);}};Runnable taskB () - {try {String message exchanger.exchange(from B);assertEquals(from A, message);} catch (InterruptedException e) {Thread.currentThread().interrupt();throw new RuntimeException(e);}};CompletableFuture.allOf(runAsync(taskA), runAsync(taskB)).join();}在这里我们有两个线程使用共同的Exchanger交换彼此之间的消息。让我们看一个例子在这个例子中我们从主线程与一个新线程交换对象 Test public void givenThread_WhenExchangedMessage_thenCorrect() throws InterruptedException, ExecutionException {ExchangerString exchanger new Exchanger();Runnable runner () - {try {String message exchanger.exchange(from runner);assertEquals(to runner, message);} catch (InterruptedException e) {Thread.currentThread().interrupt();throw new RuntimeException(e);}};CompletableFutureVoid result runAsync(runner);String msg exchanger.exchange(to runner);assertEquals(from runner, msg);result.join();}请注意我们需要先启动runner线程然后在主线程中调用exchange()。 还要注意如果第二个线程在超时时间内未达到交换点第一个线程的调用可能会超时。第一个线程应等待多长时间可以使用重载的exchange(T t, long timeout, TimeUnit timeUnit)来控制。 3.无GC数据交换 Exchanger可以用于创建通过一个线程向另一个线程传递数据的管道类型的模式。 private static final int BUFFER_SIZE 100;Testpublic void givenData_whenPassedThrough_thenCorrect() throws InterruptedException, ExecutionException {ExchangerQueueString readerExchanger new Exchanger();ExchangerQueueString writerExchanger new Exchanger();int counter 0;Runnable reader () - {QueueString readerBuffer new ConcurrentLinkedQueue();while (true) {readerBuffer.add(UUID.randomUUID().toString());if (readerBuffer.size() BUFFER_SIZE) {try {readerBuffer readerExchanger.exchange(readerBuffer);} catch (InterruptedException e) {Thread.currentThread().interrupt();throw new RuntimeException(e);}}}};Runnable processor () - {QueueString processorBuffer new ConcurrentLinkedQueue();QueueString writerBuffer new ConcurrentLinkedQueue();try {processorBuffer readerExchanger.exchange(processorBuffer);while (true) {writerBuffer.add(processorBuffer.poll());if (processorBuffer.isEmpty()) {try {processorBuffer readerExchanger.exchange(processorBuffer);writerBuffer writerExchanger.exchange(writerBuffer);} catch (InterruptedException e) {Thread.currentThread().interrupt();throw new RuntimeException(e);}}}} catch (InterruptedException e) {Thread.currentThread().interrupt();throw new RuntimeException(e);}};Runnable writer () - {QueueString writerBuffer new ConcurrentLinkedQueue();try {writerBuffer writerExchanger.exchange(writerBuffer);while (true) {System.out.println(writerBuffer.poll());if (writerBuffer.isEmpty()) {writerBuffer writerExchanger.exchange(writerBuffer);}}} catch (InterruptedException e) {Thread.currentThread().interrupt();throw new RuntimeException(e);}};CompletableFuture.allOf(runAsync(reader), runAsync(processor), runAsync(writer)).get();}在这里我们有三个线程reader、processor和writer。它们共同作为一个单一的管道在它们之间交换数据。 readerExchanger在reader和processor线程之间共享而writerExchanger在processor和writer线程之间共享。 请注意此处的示例仅用于演示。在创建无限循环时务必小心while(true)。另外为保持代码的可读性我们省略了一些异常处理。 通过重用缓冲区来交换数据的这种模式允许减少垃圾回收。exchange方法返回相同的队列实例因此这些对象不会被垃圾回收。与任何阻塞队列不同Exchanger不会创建任何用于保存和共享数据的节点或对象。 创建这样的管道类似于Disruptor模式其中一个关键区别是Disruptor模式支持多个生产者和消费者而Exchanger可以在一对生产者和消费者之间使用。 4.总结 因此Java中的Exchanger是什么它是如何工作的我们看到了如何使用Exchanger类。此外我们创建了一个管道并演示了线程之间无GC的数据交换。
http://www.zqtcl.cn/news/438966/

相关文章:

  • 做网站要icp备案吗软件定制开发 报价
  • 外国网站上做雅思考试dw做网站的导航栏
  • 公司网站建设的作用网站建设网上商城心得体会
  • 珠海网站建设的公司网站生成app
  • 营销网站建设的价格私人网站建设成本
  • 企业网站制作模板免费下载淘宝指数查询官网手机版
  • 做服装外单的网站购物网站首页图片
  • 网站建设到运营赚钱上海网络哪家比较好
  • 做网站要求高吗超炫网站
  • 贵卅省住房和城乡建设厅网站怎么快速仿wordpress站
  • 苏州网站建设排名clef wordpress
  • 罗定建设局网站汽车装饰网站源码
  • 网站用什么切版商城网站怎么建
  • 设计网站公司多少钱wordpress获取所有标签
  • 怎么看一个网站是哪个公司做的电子商务网站设计与规划
  • 邯郸哪里做网站优化网站建设如何排版
  • 济南网站建设设计制作公司找人做网站价格
  • 阿里网站年费续费怎么做分录大型的网站开发
  • 中山做网站费用广西壮族自治区住房和建设厅网站
  • vs2015做网站如何添加控件建设网站计划 ppt
  • 简述网站设计流程贵阳小程序开发软件公司
  • 营销网站建设的原则设计网站页面要注意什么
  • 上海怎么做网站国外网站 设计
  • 开发公司土地评估费计入土地价款优化搜狐的培训
  • 网站建设佰首选金手指三360怎么免费建网站
  • 网站万能密码修复苏州市建设中心网站
  • 如何搭建php网站网站制作的前期主要是做好什么工作
  • 站酷设计网站官网站不能正常显示出现后台代码
  • 网站域名改版微信公众号免费开通
  • 代网站建设如何对网站进行爬虫