监视java中的2个线程,这些线程基于使用java.util.Timer的时序相互依赖

时间:2013-02-04 11:18:41

标签: java multithreading timer telnet

我想知道如何监控两个线程,如果一个线程处于特定时间的等待状态,我会想要运行另一个线程......

特别注重我所做的事情。我有2个帖子..作家帖子:

writer = new Thread() {
  public void run() {
    try {
      Util.copyStream(remoteInput, localOutput);
    } catch(IOException e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
};

writer.setPriority(Thread.currentThread().getPriority() + 1);
writer.start();
reader.setDaemon(true);
reader.start();

try {
  writer.join();
  reader.interrupt();
} catch(InterruptedException e) {

}

和读者线程:

reader = new Thread() {
  public void run() {
    int ch;
    try {
        while(!interrupted() && (ch = localInput.read()) != -1) {
          System.out.print((char)ch);
          localOutput.write(ch);
          if (ch==10) {
              remoteOutput.write(ch);
              remoteOutput.flush();
              sleep(1000);
              continue;
          }
          remoteOutput.write(ch);
            remoteOutput.flush();
          }
    } catch(Exception e) {
      e.printStackTrace();
    }
  }
};

所以,如果我的作者线程不是来自" remoteInput"到" localOutput"对于超过特定时间,例如3秒,我应该"运行阅读器线程..,以便读者从" localInput"并写入" remoteOutput"。 localInput和remoteInput是 InputStreams ,而remoteInput和remoteOutput是简单的 OutputStreams 。我还想知道是否可以使用 java.util.Timer 来做到这一点 请帮帮我.. 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以结合使用wait / notify和Timer类来决定何时触发通知事件。