有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java线程同步和信令

我有一个特殊的要求,我想在两个线程之间进行通信

我想用Java1.6实现这个多线程用例

让我们假设,我们必须使用无人驾驶飞机保护一个地区。该区域可以在X轴上以100km为单位测量,在Y轴上以100km为单位测量。这个平面上的每一个乡绅公里都可以用{x,y}坐标定位

无人机可以有自己预定义的飞行路径(可以是随机的,在这个平原的任何地方),例如{0,1}{0,2}{0,3}{0,4}{0,5}{0,6}。他们必须继续从{0,1}飞到{0,6}。一旦无人机到达目的地,它应该开始返回,例如从{0,6}到{0,1}并继续返回第四,除非停止

但有一个转折——假设在上面的飞行路径中,无人机1从{0,1}开始,到达{0,2}。无人机1将继续在{0,2}处盘旋,直到另一架无人机释放它。例如,无人机2具有完全不同的飞行路径,但在路径中有一个或两个与无人机1相同的位置,将指示无人机1“您可以从该位置释放自己并继续飞行到您的路径,因为我在这里获取该位置”

如果您正确理解了用例,这里的问题是,已经获得{0,2}锁的thread1必须等待thread2指示释放它

我们如何做到这一点,如何向另一个线程发送消息并等待位置为空


共 (1) 个答案

  1. # 1 楼答案

    有两种常见的线程间信令方法:

    • 线程在while(signal)循环中执行其例程,并在信号变为false时退出
    • 通过类似于通信通道的对象,例如ConcurrentLinkedQueue,信号发送方不断将“任务”推送到队列中,繁忙线程不断从队列中退出。只要有任务要做,繁忙的线程就会继续工作,一旦没有更多的工作剩下,它就会停止