我做的是一个多线程的环境,极其多的线程,比如几百个。但其中有2个主要的线程是需要定时作的。但所有这些线程都是同一级生成的,所以运行优先级别也是一样的。我现在定时用的是循环中,每次在执行任务后,SLEEP(1000)来达到每秒执行一次任务的效果。可是实际上应该只是接近,因为执行任务也会需要时间,虽然很短,但一个循环下来的时间肯定是大于1秒的。我知道还有java.util.Timer和java.util.TimerTask可以用来定时。可是
1,他们在几百个线程的环境下,效果好么?是不是一样很不准确?
2,不大确定它们的运行级别。他们如果是在主程序中生成的,我其他几百个线程也是,那TIMER的级别和其他线程的级别也是一样的么?谢谢。

解决方案 »

  1.   

    本人认为,SLEEP(1000)比Timer定时时间更准确些吧,精确度想要达到毫秒级或微秒级很难,我想跟cup也有关系
      

  2.   

    定时还可以啊,并发的话,是线程进入可运行状态,可不能保证他们都能运行,这是线程的特点。比如你某个时刻,同时有1000000个任务,jvm可调度不过来让他们同时运行。
      

  3.   

    “我做的是一个多线程的环境,极其多的线程,比如几百个“
    设计应该有问题,为什么要那么多线程,你怎么保证这些线程是正确工作的?
    如果保证不了就应该不用多线程,或少用,把想成要做的工作分类,让后将
    一类工作排队后交给线程处理,就像J2EE服务器那样