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

网站未备案怎么做淘宝客电商发展新方向

网站未备案怎么做淘宝客,电商发展新方向,一个软件是怎么做出来的,野望王维我已经写了很多有关InterruptedException和中断线程的文章 。 简而言之#xff0c;如果您没有Future.cancel()调用Future.cancel()那么Future将终止待处理的get() #xff0c;但还将尝试中断基础线程。 这是一个非常重要的功能#xff0c;可以更好地利用线程池。 我还写信总… 我已经写了很多有关InterruptedException和中断线程的文章 。 简而言之如果您没有Future.cancel()调用Future.cancel()那么Future将终止待处理的get() 但还将尝试中断基础线程。 这是一个非常重要的功能可以更好地利用线程池。 我还写信总是比标准Future更喜欢CompletableFuture 。 事实证明功能更强大的Future弟兄没有那么优雅地处理cancel() 。 考虑以下任务我们稍后将在整个测试中使用以下任务 class InterruptibleTask implements Runnable {private final CountDownLatch started new CountDownLatch(1)private final CountDownLatch interrupted new CountDownLatch(1)Overridevoid run() {started.countDown()try {Thread.sleep(10_000)} catch (InterruptedException ignored) {interrupted.countDown()}}void blockUntilStarted() {started.await()}void blockUntilInterrupted() {assert interrupted.await(1, TimeUnit.SECONDS)}} 客户端线程可以检查InterruptibleTask以查看其是否已开始或被中断。 首先让我们看一下InterruptibleTask对外部的cancel()反应 def Future is cancelled without exception() {given:def task new InterruptibleTask()def future myThreadPool.submit(task)task.blockUntilStarted()and:future.cancel(true)when:future.get()then:thrown(CancellationException) }def CompletableFuture is cancelled via CancellationException() {given:def task new InterruptibleTask()def future CompletableFuture.supplyAsync({task.run()} as Supplier, myThreadPool)task.blockUntilStarted()and:future.cancel(true)when:future.get()then:thrown(CancellationException) } 到目前为止一切都很好。 显然 Future和CompletableFuture工作方式几乎相同-在取消结果后检索结果会引发CancellationException 。 但是myThreadPool线程呢 我以为它会被游泳池打断从而被回收我怎么了 def should cancel Future() {given:def task new InterruptibleTask()def future myThreadPool.submit(task)task.blockUntilStarted()when:future.cancel(true)then:task.blockUntilInterrupted() }Ignore(Fails with CompletableFuture) def should cancel CompletableFuture() {given:def task new InterruptibleTask()def future CompletableFuture.supplyAsync({task.run()} as Supplier, myThreadPool)task.blockUntilStarted()when:future.cancel(true)then:task.blockUntilInterrupted() } 第一个测试将普通的Runnable提交给ExecutorService并等待其启动。 稍后我们取消Future并等待直到观察到InterruptedException 。 当基础线程被中断时 blockUntilInterrupted()将返回。 但是第二次测试失败。 CompletableFuture.cancel()永远不会中断基础线程因此尽管Future看起来好像已被取消但后备线程仍在运行并且sleep()不会抛出InterruptedException 。 错误或功能 它已记录在案 因此很遗憾地提供一个功能 参数 mayInterruptIfRunning –此值在此实现中无效因为不使用中断来控制处理。 您说RTFM但是为什么CompletableFuture这样工作 首先让我们研究“旧的” Future实现与CompletableFuture有何不同。 从ExecutorService.submit()返回的FutureTask具有以下cancel()实现我使用类似的非线程安全Java代码删除了Unsafe 因此仅将其视为伪代码 public boolean cancel(boolean mayInterruptIfRunning) {if (state ! NEW)return false;state mayInterruptIfRunning ? INTERRUPTING : CANCELLED;try {if (mayInterruptIfRunning) {try {Thread t runner;if (t ! null)t.interrupt();} finally { // final statestate INTERRUPTED;}}} finally {finishCompletion();}return true; } FutureTask具有一个遵循该状态图的state变量 在的情况下 cancel()我们可以进入CANCELLED状态或去INTERRUPTED通过INTERRUPTING 。 核心部分是我们拿runner线程如果存在的也就是说如果当前正在执行的任务我们尽量打断它。 该分支负责急切和强制中断已运行的线程。 最后我们必须通知阻塞的所有线程Future.get()中finishCompletion()这里无关紧要。 因此很明显多大的Future取消已经运行的任务。 那CompletableFuture呢 cancel()伪代码 public boolean cancel(boolean mayInterruptIfRunning) {boolean cancelled false;if (result null) {result new AltResult(new CancellationException());cancelled true;}postComplete();return cancelled || isCancelled(); } 令人失望的是我们几乎没有将result设置为CancellationException 而忽略了mayInterruptIfRunning标志。 postComplete()也有类似的作用finishCompletion() -在通知未来注册的所有悬而未决的回调。 它的实现相当令人不快使用非阻塞式Treiber stack 但是它绝对不会中断任何底层线程。 原因和含义 在CompletableFuture情况下有限的cancel()不是错误而是设计决定。 CompletableFuture并非固有地绑定到任何线程而Future几乎总是代表后台任务。 从零开始创建CompletableFuture new CompletableFuture() 是完美的其中根本没有要取消的底层线程。 我仍然不禁感到大多数CompletableFuture 都将具有关联的任务和后台线程。 在这种情况下 cancel()可能会出现故障。 我不再建议用CompletableFuture盲目地替换Future 因为它可能会更改依赖cancel()的应用程序的行为。 这意味着CompletableFuture故意违反了Liskov替换原则 -这是需要考虑的严重问题。 翻译自: https://www.javacodegeeks.com/2015/03/completablefuture-cant-be-interrupted.html
http://www.zqtcl.cn/news/656885/

相关文章:

  • 什么是静态页面网站甜品网站建设方案
  • 做一个网站大概多少钱养生网站源码
  • 淘宝客网站建设分类校园网站开发设计报告
  • 个人网站模板 免费儿童编程培训机构
  • 运动健身型网站开发免费ddns域名注册
  • 专业pc网站建设wordpress 支持php7.1
  • 廊坊网站制作系统虚拟服务器搭建
  • 做网站的优势wordpress百度索引链接
  • 网站哪些功能是PHP做的wordpress 正文宽度
  • wordpress考试主题株洲优化公司
  • 怎么做企业网站建设方案怎样查网站有没有备案
  • 浙江短视频seo优化网站专做童装的网站
  • 印刷包装公司网站模板陕西住房和城乡建设厅网站
  • 成都响应式网站建设公司网站 建设的必要性
  • 江苏省建设局官方网站查询wordpress收到登录错误
  • 个人与企业签订网站开发合同北京个人网站建设
  • 阀门网站设计dede静态网站
  • 做暧暧视频网站在线网站建设项目推文
  • 岳池发展建设集团有限公司门户网站毕设做网站工作量够吗
  • 手机网站客户端设计与实现手机网站 焦点图
  • 网站建设常用的开发语言介绍设计公司官网首页
  • 做网站能拿多少钱视频策划方案怎么写
  • 权威的顺德网站建设dw不会写代码能建立网站吗
  • 做网站美工的前途怎么样企业通讯软件下载
  • 客户说做网站价格高成都住建局官网住建智慧建管
  • 股票分析网站可以做推广吗网站开发 简历项目经历
  • 军人可以做网站吗学生信息管理系统网页设计教程
  • 使用循环视频做背景的网站青岛网站推广的价格
  • 邯山区建设局网站上海公司招聘
  • 做网站沈阳本地网站忧化 优帮云