是否存在java线程中断异步队列并放入可报警队列?

是否存在java线程中断异步队列并放入可报警队列?,java,multithreading,timer,async-await,thread-sleep,Java,Multithreading,Timer,Async Await,Thread Sleep,像下面的链接一样,有并没有java函数可以线程中断异步队列并放入可报警 我想用java实现异步定时器功能。我检查它在C++中工作。但我不知道它是否是java语言。 当主线程运行时,定期检查是否触发了异步计时器,然后运行它,然后返回并再次运行。这就是我想做的。 当然,当检查异步定时器触发时,我将使用sleep和alertable 我试图在谷歌上找到它,但没有找到。 提前谢谢 我想做的更多细节如下 让我们假设有一个程序可以获取如下请求: msg1 : msgname=aa1 to=sub1 wai

像下面的链接一样,有并没有java函数可以线程中断异步队列并放入可报警

我想用java实现异步定时器功能。我检查它在C++中工作。但我不知道它是否是java语言。 当主线程运行时,定期检查是否触发了异步计时器,然后运行它,然后返回并再次运行。这就是我想做的。 当然,当检查异步定时器触发时,我将使用sleep和alertable

我试图在谷歌上找到它,但没有找到。 提前谢谢

我想做的更多细节如下

让我们假设有一个程序可以获取如下请求:

msg1 : msgname=aa1 to=sub1 waittime=1000 msgbody 
msg2 : msgname=aa2 to=sub2 waittime=2000 msgbody 
msg3 : msgname=aa3 to=sub1 waittime=3000 msgbody 
msg4 : msgname=aa3 to=sub1 msgbody . .
程序应该将每个消息传递给sub1,sub2,如msg的to字段中所述


如果waittime存在,它将在毫秒后传递消息。程序应该在一个线程中完成,并且在一秒钟内有超过10000个msg。如果只使用同步睡眠,所有的MSG都不会在一段时间内通过并延迟。我检查它在C++代码中运行得很好,并且我看到了一个用java编写的商业程序(也许)。但是我是java的新手,我想知道这在java中是可能的。

java没有类似于Windows的“可警报”和APC队列的概念,我怀疑是否有可能同时使用Windows本机API并将其与普通java线程行为相集成

在Java中实现计时器的简单方法是使用标准的
Timer
类;看。如果这对你不起作用,请更详细地解释你的问题


作为对后续问题的回应:是的,这在Java中是可能的。事实上可能有很多方法可以做到这一点。但是
Timer
TimerTask
是一种很好的方法。大概是这样的:

   public class MyTask extends TimerTask {
       private String msg;
       private String to;
       public Mytask(String msg, String to) {
          this.msg = msg;
          this.to = to;
       }

       public void run() {
           // process message
       }
   }

   Timer timer = new Timer();

   while (...) {
       // read message
       timer.schedule(new MyTask(msg, to), waitTime);
   }

Java没有类似于Windows的“可报警”和APC队列的概念,我怀疑是否可能既使用Windows本机API,又将其与普通Java线程行为集成

在Java中实现计时器的简单方法是使用标准的
Timer
类;看。如果这对你不起作用,请更详细地解释你的问题


作为对后续问题的回应:是的,这在Java中是可能的。事实上可能有很多方法可以做到这一点。但是
Timer
TimerTask
是一种很好的方法。大概是这样的:

   public class MyTask extends TimerTask {
       private String msg;
       private String to;
       public Mytask(String msg, String to) {
          this.msg = msg;
          this.to = to;
       }

       public void run() {
           // process message
       }
   }

   Timer timer = new Timer();

   while (...) {
       // read message
       timer.schedule(new MyTask(msg, to), waitTime);
   }

你应该看看你应该看看一个警告。。。在Windows 8或更高版本上,这可能会在
waitTime
加上S3(操作系统睡眠状态)中的时间量触发。只是一个警告。。。在Windows 8或更高版本上,这可能会在
waitTime
加上S3中的时间量(操作系统睡眠状态)触发。