ActorThread

This commit is contained in:
Imbus 2024-10-09 20:50:40 +02:00
parent 820687f59b
commit 9cf56e98c5

View file

@ -1,25 +1,26 @@
package actor;
public abstract class ActorThread<M> extends Thread {
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
// TODO: one suitable attribute here
public class ActorThread<M> extends Thread {
private final LinkedBlockingQueue<M> q = new LinkedBlockingQueue<>();
/** Called by another thread, to send a message to this thread. */
public void send(M message) {
// TODO: implement this method (one or a few lines)
q.offer(message);
}
/** Returns the first message in the queue, or blocks if none available. */
protected M receive() throws InterruptedException {
// TODO: implement this method (one or a few lines)
return null;
return q.take();
}
/** Returns the first message in the queue, or blocks up to 'timeout'
milliseconds if none available. Returns null if no message is obtained
within 'timeout' milliseconds. */
protected M receiveWithTimeout(long timeout) throws InterruptedException {
// TODO: implement this method (one or a few lines)
return null;
return q.poll(timeout, TimeUnit.MILLISECONDS);
}
}