Java线程 - 等待条件和条件更改

时间:2013-12-30 13:44:32

标签: java multithreading

我需要实现一个在Java中使用等待条件的线程的测试,然后做一些事情来使条件为假,并且在该检查期间条件为假。具体情况如下。我是新手一般的线程,特别是Java中的线程(从未在任何编码语言中使用过线程)。场景是这样的:

  1. 在linux中等待文件的值为1(在文件中使用cat)
  2. 一旦找到值1,在linux机器上运行ping,在ping期间我需要验证整个ping会话期间同一文件中的值为0
  3. ping结束后我需要验证文件中的值是否为1
  4. 你能指导我一个关于如何使用线程在Java中执行此操作的简单示例吗?

    谢谢..

2 个答案:

答案 0 :(得分:0)

一般方法是启动一个线程并使用一些同步机制来确定线程何时完成作业。 其中一种方法可以使用ExecutorService和awaitTermination,第二种方法可能是使用CountDownLatch:

CountDownLatch latch = new CountDownLatch(2);
Thread myThead1 = new MyThread(latch);
Thread myThead2 = new MyThread(latch);
myThread1.start();
myThread2.start();

// This will block execution until myThead1 and myThead2 will call countDown:
latch.await();

线程实现应该在作业完成后调用countDown方法:

public class MyThread extends Thread {

    private final CountDownLatch latch;

    public MyThread(CountDownLatch latch) {
        this.latch = latch;
    }

    public void run() {
        // do your job here
        latch.countDown();
    }
}

答案 1 :(得分:0)

请检查{-1}}的java-doc。有一个很好的例子,您可以将其用作代码的基础。