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

快速做网站哪家好路由器优化大师

快速做网站哪家好,路由器优化大师,创作者服务平台,音乐播放器网站怎么做引言 由于项目中有处理大量后台任务并且串行执行的需求,特意写了一个简易的任务调度器,方便监控每个任务执行和异常情况,任务之间互不影响。正如上所述,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.mnyf.cn/news/52493.html

相关文章:

  • 一流的上海网站建设营销网站设计
  • 网站登录页面html模板网络营销的10个特点
  • 建设部网站1667号自己怎么做引流推广
  • 青岛网站排名提升网络营销平台
  • 军民融合网站建设搜索引擎优化结果
  • 企业网站建设 价格seo关键词库
  • jsp网站建设代码优化方案模板
  • 湖南益阳攀枝花seo
  • 公司企业文化模板百度seo算法
  • 大型网站建设兴田德润简介代写平台
  • 普洱在百度上做网站的想要网站导航推广页
  • 南京网站建设招聘整站优化系统厂家
  • 给境外合法网站做数据独立站seo搜索优化
  • 门户网站建设目标最新的域名网站
  • 安平县做网站的有哪些广告做到百度第一页
  • 可以用来做论文引用的网站鞍山网络推广
  • 大型网站开发框架有哪些郑州seo教程
  • wordpress做电影网站网文推广怎么做
  • 做空视频文件的网站线上如何做推广
  • 可以做众筹的网站有哪些汕头搜索引擎优化服务
  • 昆山建设监察网站seo的优化技巧和方法
  • 钢材网站建设百度网络营销
  • wordpress+重复插件seo关键词优化推广价格
  • wordpress如何添加分类目录小时seo百度关键词点击器
  • 个人网站可以干什么营销案例100例简短
  • 如何在网站中做公示信息sem是什么品牌
  • 注册安全工程师题库嘉兴seo外包公司费用
  • 日本人做网站网页搜索引擎大全
  • 济宁做网站的企业悟空建站seo服务
  • 中文网站怎么做英文版全媒体广告代理