开发者社区> 问答> 正文

关于Java线程池设计疑问?

设计一个线程池,这个线程池的任务有多种状态(类似短信的发送中、已发送、送达、已读等等),需要保证同一个任务的不同状态在一个线程处理,以保证有序处理。业务上比较适合使用 CachedThreadPool。

问题在于怎么保证同一个任务的不同状态在一个线程处理呢。

展开
收起
小旋风柴进 2016-03-03 16:07:36 2144 0
1 条回答
写回答
取消 提交回答
  • 我想并不是线程池的问题,问题是同一任务不可并行处理。简单的处理方式就是在处理时,同任务加lock,用一个线程池。

    如:

    任务:class Task{ ReentrantLock lock=new ReentrantLock() }

    处理:try{ task.getLock().lock(); //do something }finally{ task.getLock().unlock();}

    这种简单处理有个小问题,就是如果处理时间长,状态多时,会占用线程池数量。

    复杂的可能需要引入队列概念。

    2019-07-17 18:51:35
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载