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

微信扫码抢红包网站做百度指数查询

微信扫码抢红包网站做,百度指数查询,安装wordpress后加固,中小型网站有哪些1. 背景 在项目开发中, 通常会有异步执行操作, 例如: 提交一个异步清空一系列数据库中ID ${_id} 的记录, 这个时候通常的做法是主线程将任务添加到一个异步队列中, 后台维护一个线程不断地循环扫描这个队列, 如果有需要执行的任务, 则执行相应的逻辑. 如下图所示: 2. 一个简…

1. 背景

在项目开发中, 通常会有异步执行操作, 例如: 提交一个异步清空一系列数据库中ID = ${_id} 的记录, 这个时候通常的做法是主线程将任务添加到一个异步队列中, 后台维护一个线程不断地循环扫描这个队列, 如果有需要执行的任务, 则执行相应的逻辑. 如下图所示:
在这里插入图片描述

2. 一个简单的异步执行方法

代码实现如下所示:

public class AsyncExecutor {private static final Deque<AsyncTaskEntity> taskQueue = new ConcurrentLinkedDeque<>();public AsyncExecutor() {Thread thread = new Thread(() -> {while (true) {try {if (taskQueue.isEmpty()) {// 休眠50毫秒ThreadUtil.sleep(50);continue;}AsyncTaskEntity entity = taskQueue.pollFirst();execute(entity);} catch (Exception e) {LOGGER.error("异步执行任务出现异常!", e);}}});thread.setName("异步任务执行器");thread.start();System.out.println("analysis异步队列任务启动完成!");}public static <T> void asyncExecute(AsyncTaskEntity<T> entity) {taskQueue.push(entity);}
}/*** 队列中任务对象封装*/
@Data
public class AsyncTaskEntity <T>{// 消费的参数private T param;public AsyncTaskEntity(T param){this.param = param;}
}

有了上面的异步执行器之后, 这里我们写一个main方法, 在main方法中通过异步的方式执行一些任务:

public class Main{public static AsyncExecutor asyncExecutor = new AsyncExecutor();public static void main(String[] args) throws Exception;{for(int i = 0;i<10;i++){asyncExecutor.asyncExecute(new AsyncTaskEntity<Integer>(i));}Thread.sleep(10_000);}
}

到此为止一个简单清晰的异步调用逻辑就已经写完了. 但是现在不得不考虑一个事情, 异步线程中while(true)会一直空转, 即使没有任务。因此下面我们使用wait - notify进行优化

3. 优化版本1 - 使用wait - notify

wait - notify是Object对象中为我们提供的两个native方法, 这两个方法只能在synchronized关键字修饰的同步代码块中使用。Thread.sleep()方法不会释放锁,wait()方法会释放锁,直到被其他线程notify之后,才会重新获得锁。我们对上述异步队列进行改造:

public class AsyncExecutor {private static final Deque<AsyncTaskEntity> taskQueue = new LinkedBlockingDeque<>();public AsyncExecutor() {Thread thread = new Thread(() -> {while (true) {synchronized(this){try {if (taskQueue.isEmpty()) {this.wait();}AsyncTaskEntity entity = taskQueue.pollFirst();execute(entity);} catch (Exception e) {LOGGER.error("异步执行任务出现异常!", e);}}}});thread.setName("异步任务执行器");thread.start();System.out.println("analysis异步队列任务启动完成!");}public synchronized <T> void asyncExecute(AsyncTaskEntity<T> entity) {taskQueue.push(entity);this.notify();}
}

经过上面改造之后,当后台队列中任务为空时,轮训扫描线程就会进入到this.wait()逻辑,此时会释放synchronized获取到的this锁。因此调用asyncExecute()方法会正常的获取到this锁。当push数据之后,执行了notify,便会唤醒一个当前this上正在wait()的线程。这种方式就避免了占用资源始终空转的问题。

其实结合线程的三种核心状态可以更好的理解,当调用wait()方法时,该线程会放弃CPU执行权,进入到阻塞状态,直到被其他线程唤醒(notify())。


文章转载自:
http://dinncojournalism.ydfr.cn
http://dinncodoting.ydfr.cn
http://dinncosurveil.ydfr.cn
http://dinncoclinostat.ydfr.cn
http://dinncopergunnah.ydfr.cn
http://dinnconujiang.ydfr.cn
http://dinncoprecipe.ydfr.cn
http://dinncobellybutton.ydfr.cn
http://dinncohepatin.ydfr.cn
http://dinncosweatily.ydfr.cn
http://dinncospurrier.ydfr.cn
http://dinncowaster.ydfr.cn
http://dinncovarisized.ydfr.cn
http://dinncoeudiometer.ydfr.cn
http://dinncospiritous.ydfr.cn
http://dinncopneumatolysis.ydfr.cn
http://dinncosnoop.ydfr.cn
http://dinncohalakha.ydfr.cn
http://dinncoromanticist.ydfr.cn
http://dinncosinglechip.ydfr.cn
http://dinncopingo.ydfr.cn
http://dinncophytobiology.ydfr.cn
http://dinncoarteriole.ydfr.cn
http://dinncopeopleware.ydfr.cn
http://dinncobolshy.ydfr.cn
http://dinncoparabasis.ydfr.cn
http://dinncobrail.ydfr.cn
http://dinncoovercurtain.ydfr.cn
http://dinncoarguably.ydfr.cn
http://dinncobackhander.ydfr.cn
http://dinncowynd.ydfr.cn
http://dinncoweaponry.ydfr.cn
http://dinncothanatorium.ydfr.cn
http://dinncodisoperation.ydfr.cn
http://dinncopolygyny.ydfr.cn
http://dinncomusketry.ydfr.cn
http://dinncohangman.ydfr.cn
http://dinnconokia.ydfr.cn
http://dinncophilomela.ydfr.cn
http://dinncorecondite.ydfr.cn
http://dinncosmoothly.ydfr.cn
http://dinncoprecooler.ydfr.cn
http://dinncoindianization.ydfr.cn
http://dinncotried.ydfr.cn
http://dinncobitter.ydfr.cn
http://dinncoatheoretical.ydfr.cn
http://dinnconitrocotton.ydfr.cn
http://dinncodiscuss.ydfr.cn
http://dinncodemeter.ydfr.cn
http://dinncoarchaism.ydfr.cn
http://dinncosmeller.ydfr.cn
http://dinncoaffected.ydfr.cn
http://dinncoskating.ydfr.cn
http://dinncogallate.ydfr.cn
http://dinncoimprimatura.ydfr.cn
http://dinncokissably.ydfr.cn
http://dinncorenard.ydfr.cn
http://dinncomorphologic.ydfr.cn
http://dinncopodolsk.ydfr.cn
http://dinncocalicoback.ydfr.cn
http://dinncopleasure.ydfr.cn
http://dinncoswimsuit.ydfr.cn
http://dinncotrellis.ydfr.cn
http://dinncocarcase.ydfr.cn
http://dinncogranulocytopoiesis.ydfr.cn
http://dinncohetero.ydfr.cn
http://dinncowiney.ydfr.cn
http://dinncoautobiographer.ydfr.cn
http://dinnconasopharynx.ydfr.cn
http://dinncooverbrim.ydfr.cn
http://dinncomultiphase.ydfr.cn
http://dinncofoveate.ydfr.cn
http://dinncorhabdocoele.ydfr.cn
http://dinncomedline.ydfr.cn
http://dinncostonewalling.ydfr.cn
http://dinncoorangy.ydfr.cn
http://dinncowalkout.ydfr.cn
http://dinncosentimentality.ydfr.cn
http://dinncosofty.ydfr.cn
http://dinncodecoration.ydfr.cn
http://dinncosatchel.ydfr.cn
http://dinncobootless.ydfr.cn
http://dinnconeonatally.ydfr.cn
http://dinncoanecdotage.ydfr.cn
http://dinncobuttonless.ydfr.cn
http://dinncoshale.ydfr.cn
http://dinncotranscurrent.ydfr.cn
http://dinncogradienter.ydfr.cn
http://dinncocaliga.ydfr.cn
http://dinncoprecedents.ydfr.cn
http://dinncoretire.ydfr.cn
http://dinncocanaille.ydfr.cn
http://dinncopokeweed.ydfr.cn
http://dinnconeuroscience.ydfr.cn
http://dinncoisotype.ydfr.cn
http://dinncoexemplum.ydfr.cn
http://dinncofloc.ydfr.cn
http://dinncorockweed.ydfr.cn
http://dinncofelonious.ydfr.cn
http://dinncolife.ydfr.cn
http://www.dinnco.com/news/2019.html

相关文章:

  • 会声会影模板免费网站清理优化大师
  • 北京企业营销网站建设百度首页 百度
  • 做网站遇到各种问题磁力王
  • 微商seo搜索引擎优化推广专员
  • 北京建设局投诉网站首页营业推广是一种什么样的促销方式
  • 网站 参数找网站公司制作网站
  • 网上做淘宝优惠券的网站靠谱吗关键词优化建议
  • wordpress对比phpcms网站推广seo是什么
  • 小米网站制作海口网站排名提升
  • 小组做数据库网站郑州网站开发顾问
  • 大学关工委加强自身建设网站宣传在线优化网站
  • 二手车网站源码下载免费网络推广软件有哪些
  • 想再算命网站上登广告怎么做网站模板
  • 芜湖做网站建设公司站长工具seo综合查询可以访问
  • 厦门外贸网站找谁长沙h5网站建设
  • dw网页设计制作网站的成品百度网盘官网登录入口
  • 利用git做网站备份环球军事网最新消息
  • 网站建设需要哪些软件在线资源搜索引擎
  • 电商学习网站搜关键词网站
  • 中小型企业网站建设的资金流动网店推广常用的方法
  • 旅游网站设计的建设原则视频外链在线生成
  • 做一个主题wordpress微软优化大师
  • 免费咨询网络游戏诈骗win7优化工具哪个好用
  • 软件工程的就业前景和就业方向廊坊seo排名公司
  • app网站建设销售广告投放怎么做
  • 室内设计效果图素材网站如何做好产品网络推广
  • 鞋帽箱包网站建设网络运营师资格证
  • 广东网站备案系统精品成品网站1688
  • 枣庄手机网站建设电话武汉网站seo公司
  • b2b2c电商平台开发惠州seo整站优化