科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道关于线程控制的问题

关于线程控制的问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

关于线程控制的问题

作者:csdn 来源:csdn 2009年12月17日

关键字: JavaSE 问答 java

  • 评论
  • 分享微博
  • 分享邮件

关于线程控制的问题

关于线程控制的问题

    已知有一个队列,希望其中的元素超过200个的时候,进行元素获取并删除(即poll)操作,然后将获取到的所有元素批量写入到数据库中。
    本人现在已经用了一种线程轮询的方式实现了此功能。但考虑到CPU的利用率及程序的高并发问题,需要将线程控制方式由轮询改为触发的方式。
    本人所谓的轮询即是在控制线程类ControlThread中的run方法进行无限循环,在此循环中进行队列元素个数的监视及sleep操作。
    而本人希望采用的触发方式则是当队列元素个数不断增长,涨到200时,则通过发送一个信号给控制线程ControlThread,ControlThread才会进行一次run方法。

 

你看看Scala的Actor类,如果你做的是项目,建议直接用Scala,反正可以随便调用java的class。
你说的方式,应该是处理并发比较好的办法了。轮询肯定是效率最差的那种了。
目前Java,你可以使用wait和notifyAll来模拟我说的Actor,不知道效率会怎么样。
其实考虑到实际操作系统的特性,Windowss的消息机制,就是一个很好的例子。

 

 队列类持有控制线程的引用,每put一个数据到队列中时都检查一下当前队列的大小,如果发现
达到200,则调用控制线程去处理。 
其实就是将你上面轮询的做法反过来,你原来用线程轮询监视队列中的大小,现在是队列自己去
监视自己,达到一定要求就通知处理线程去处理。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章