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

广州企业建站系统模板nodejs网站毕设代做

广州企业建站系统模板,nodejs网站毕设代做,效果图制作公司怎么拉业务,wordpress插件dflip引言 由于项目中有处理大量后台任务并且串行执行的需求,特意写了一个简易的任务调度器,方便监控每个任务执行和异常情况,任务之间互不影响。正如上所述,Kotlin中的TaskScheduler类提供了一个强大的解决方案,用于使用S…

引言

由于项目中有处理大量后台任务并且串行执行的需求,特意写了一个简易的任务调度器,方便监控每个任务执行和异常情况,任务之间互不影响。正如上所述,Kotlin中的TaskScheduler类提供了一个强大的解决方案,用于使用ScheduledExecutorService异步地排队和执行任务。


使用方法

1.初始化:

val taskListener = object : TaskScheduler.TaskListener {override fun beforeExecute(task: TaskScheduler.NamedRunnable) {println("开始任务:${task.name}")}override fun afterExecute(task: TaskScheduler.NamedRunnable, exception: Exception?) {println("完成任务:${task.name},异常:$exception")}
}
val scheduler = TaskScheduler(taskListener, 5)

2.提交任务:

scheduler.submit("加载数据") {// 加载数据的代码
}
scheduler.submit("处理数据") {// 处理数据的代码
}

3.优雅关闭:

当所有任务完成后,调度器将在指定的超时后自动关闭,确保不浪费资源。


完整代码

import java.util.concurrent.*
import java.util.concurrent.atomic.AtomicBooleanclass TaskScheduler(private val listener: TaskListener? = null, private val timeout: Long = 5) {private val taskQueue = ConcurrentLinkedQueue<NamedRunnable>()private val isTaskRunning = AtomicBoolean(false)private var executorService: ScheduledExecutorService? = null@Synchronizedfun submit(name: String, task: Runnable) {ensureExecutorService()taskQueue.offer(NamedRunnable(name, task))if (isTaskRunning.compareAndSet(false, true)) {executorService?.submit { processTasks() }}}private fun processTasks() {try {while (taskQueue.isNotEmpty()) {val nextTask = taskQueue.poll()listener?.beforeExecute(nextTask)var exception: Exception? = nulltry {nextTask.run()} catch (e: Exception) {exception = e}listener?.afterExecute(nextTask, exception)}} finally {isTaskRunning.set(false)scheduleShutdown()}}private fun ensureExecutorService() {if (executorService == null || executorService!!.isShutdown) {executorService = Executors.newSingleThreadScheduledExecutor()println("ensureExecutorService newSingleThreadScheduledExecutor")}}private fun scheduleShutdown() {executorService?.schedule({if (taskQueue.isEmpty() && isTaskRunning.compareAndSet(false, true)) {executorService?.shutdown()executorService = nullprintln("scheduleShutdown shutdown")} else {isTaskRunning.set(false)  // 确保新任务可以触发执行器重启}}, timeout, TimeUnit.SECONDS)}interface TaskListener {fun beforeExecute(task: NamedRunnable)fun afterExecute(task: NamedRunnable, exception: Exception?)}class NamedRunnable(val name: String, private val task: Runnable) : Runnable {override fun run() {task.run()}}
}

最后

简要概括下优缺点:

  • 资源自动管理,超时自动释放资源
  • 任务命名,更清晰的了解每个任务执行情况
  • 线程安全,不用担心多线程添加任务导致顺序紊乱

优点:

  • 灵活性:允许动态添加任务,并根据任务负载需要创建或关闭执行器,从而管理执行器的生命周期。

缺点:

  • 单线程限制:当前实现使用单线程执行器,这意味着任务是顺序执行的,而不是并行执行。这可能是CPU密集型任务的瓶颈。
http://www.yayakq.cn/news/248784/

相关文章:

  • 外卖网站那家做的好wordpress右键菜单插件
  • h5个人网页设计心得给甜品网站做seo
  • 大连网站建设兼职wordpress 短信登录密码错误
  • 福建省建设执业注册中心网站wordpress页面顶部登录
  • 公司网站内容的更新北京建工集团有限公司官网
  • 有微重庆网站吗wordpress教育主题
  • 贵阳两学一做网站晋城门户网站建设
  • 开发小型门户网站的方法 步骤常州网站建设公司案例
  • 药店网站源码百度一下百度首页官网
  • p2p网站建设做微信活动是做网站还是做小程序好
  • 东莞网站建设推广有哪些wordpress著名插件
  • 免费网站的app怎样设计电子商务网站的建设
  • 做暖暖视频免费观看免费网站wordpress关闭自动更新
  • 佛山制作网站设计报价怎么给客户谈做网站
  • ·温州公司建设网站南昌网站优化
  • 修改数据库密码 进不了网站后台双wordpress自动同步文章
  • 做网店去哪个网站货源好为企业做好服务保障
  • 小地方的旅游网站怎么做wordpress修改字体
  • 网站可信认证必须做吗公司名称怎么取名
  • 怎么不花钱建立网站网站开发模板下载
  • 南宁做网站公司品牌云尚网络网站虚拟主机行吗
  • 网站姐姐做床戏网站平台公司实体化转型
  • 建网站 视频的网址深圳商城网站建设公司
  • 合肥 做网站的图片网站如何优化
  • 做网站项目前期工作包括哪些摄影网站免费源码
  • 东营网站建设价钱表自贡跨省特大虚假广告案
  • 网站名称与域名wordpress form 美化
  • 丽水微信网站建设价格网站建设的相关书籍
  • 那个公司做的外贸网站好婚庆公司多少钱
  • 对企业网站建设的建议免费咨询承诺书