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指示释放它Java 线程同步和信令,java,multithreading,Java,Multithreading,我有一个特殊的要求,我想在两个线程之间进行通信 我想用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,
我们如何做到这一点,如何向另一个线程发送消息并等待位置为空?有两种常见的线程间信令方法:
- 线程在
循环中执行其例程,并在信号变为while(signal)
false时退出
- 通过类似于通信通道的对象,例如
,信号发送方不断地将“任务”推送到队列中,而忙碌的线程不断地从队列中退出。只要有任务要做,忙碌的线程就会继续工作,一旦没有更多的工作剩下,它就会停止ConcurrentLinkedQueue
public class Square(){
...
public void arriveOnSquare(){
notify();
...
synchronized(this){
wait();
}
...
}
}
与我们分享您解决问题的尝试。我不知道该怎么办。正如我在问题部分中所说的,thread1已经获得了位置{0,2}上的锁。两个线程之间唯一的分歧是位置,我找不到在thread1和另一个试图获取锁的线程之间进行通信的同步方式。您应该用什么语言编写这个?不同的语言可能对同一事物有不同的词。对不起,我之前没有指定语言,我想用Java 1.6(也更新了问题语句)实现这一点,因此线程/无人机正在以自己的速度更改其位置,但在被要求时也被迫更改位置?