首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java线程-等待条件和条件的更改

问Java线程-等待条件和条件的更改
EN

Stack Overflow用户
提问于 2013-12-30 13:44:32
回答 2查看 155关注 0票数 0

我需要实现一个在Java中使用线程等待条件的测试,然后做一些事情使条件为false,在检查期间条件为false。确切的情况如下。我对线程很陌生,尤其是Java中的线程(在任何编码语言中从未使用过线程)。情况如下:

  1. 等待linux中的文件具有值1(在文件上使用cat )
  2. 一旦找到值1,在linux机器上运行ping,在ping期间,我需要在整个ping会话期间验证同一个文件中的值为0。
  3. ping结束后,我需要再次验证文件中的值为1。

你能告诉我一个简单的例子,说明如何使用线程在Java中完成这个任务吗?

谢谢..

EN

回答 2

Stack Overflow用户

发布于 2013-12-30 14:24:36

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

代码语言:javascript
复制
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方法:

代码语言:javascript
复制
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();
    }
}
票数 0
EN

Stack Overflow用户

发布于 2013-12-30 20:29:23

请查看java的java.util.concurrent.locks.Condition。有一个很好的例子,您可以使用它作为代码的基础。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20840789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档