【问题标题】:How to run different class simultaneously or non-blocked in JAVA如何在 JAVA 中同时或非阻塞地运行不同的类
【发布时间】:2018-12-29 20:41:39
【问题描述】:

我想同时运行 3 个不同的课程。

 public static void takeStatus() throws IOException, InvalidKeyException, NoSuchAlgorithmException {

        static double [][] askbid_box = new double [2][6];
        Double newqty = 0.01;
    //case 1

    if(Alarm[0]>0) {
        A.sell(askbid_box[0][0], newqty);
        B.buy(askbid_box[1][2], newqty);
    }
    //case 2
    if(Alarm[0]>0) {
        C.sell(askbid_box[0][2], newqty);
        A.buy(askbid_box[1][0], newqty);            

} //end

具体来说,代码必须同时运行

(A.sell 和 B.buy)同时或非阻塞

(C.sell 和 A.buy)同时或非阻塞

我知道潜在的解决方案是 Thread 或 Runnable。

但我不知道如何编码。请帮忙。

【问题讨论】:

  • 欢迎来到社区。这可能不适合这个社区,因为它相当广泛,而不是特定的编程问题。线程和并发可能是一个复杂的话题;我建议查看此资源:tutorials.jenkov.com/java-concurrency/…。此外,您可能希望查看 StackOverflow 的“帮助”部分,了解有关提出适合该网站的问题的更多详细信息:stackoverflow.com/help
  • 做一些基础研究,你知道 Thread 和 Runnable,所以找到帮助你入门的阅读材料和教程应该很容易。
  • 你没有“开课”。 -1 来自我。

标签: java multithreading


【解决方案1】:
CountDownLatch countDown = new CountDownLatch(1);

new Thread(() -> {
    countDown.await();
    A.sell(askbid_box[0][0], newqty);
}).start();
new Thread(() -> {
    countDown.await();
    B.buy(askbid_box[1][2], newqty);
}).start();

countDown.countDown();

这会创建一个 countdownlatch 和两个线程,使线程等待锁存器发出信号,并同时启动它们。

countDown.await(); 表示线程一直等到countDown.countDown(); 被调用

【讨论】:

  • 非常感谢 Kitaec。
猜你喜欢
  • 2021-07-13
  • 2011-10-21
  • 2021-04-04
  • 1970-01-01
  • 2021-06-14
  • 2023-03-14
  • 2013-07-20
  • 1970-01-01
相关资源
最近更新 更多