Thread.sleep waits more than expected

后端 未结 4 1779
南笙
南笙 2021-01-17 20:14

The following code:

long msBefore = System.currentTimeMillis();
//Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
try
{Thread.sleep(200);
} catch (I         


        
4条回答
  •  粉色の甜心
    2021-01-17 20:53

    I have a requirement to send n messages per second, I think wait/notify don't fit, correct?

    If you have a hard timing requirement, then you are going to need to use a real-time Java implementation. Mainstream SE and ME Java implementations are not suitable for hard realtime applications.

    There are various tricks you can use to meet such requirements "most of the time" ... but if your application / system gets overloaded you are liable start to missing the required message rate.

    Th real problem is not the accuracy of the timers, but the fact that a non-realtime scheduler won't (and can't) guarantee to schedule the thread to run as soon as the timer expires.

提交回复
热议问题