programming-examples/java/Interprocess communication.java

82 lines
2.2 KiB
Java
Raw Normal View History

2019-11-18 13:43:20 +01:00
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class Squarer
{
private BlockingQueue<Integer> in;
private BlockingQueue<SquareResult> out;
Squarer(BlockingQueue<Integer> request, BlockingQueue<SquareResult> replies)
{
this.in = request;
this.out = replies;
}
public void start()
{
new Thread(new Runnable()
{
public void run()
{
while(true)
{
try
{
int x = in.take();
int y = x*x;
Thread.sleep(2000);
System.out.println("OK, got it. Calculating..");
Thread.sleep(4000);
out.put(new SquareResult(x,y));
}
catch(InterruptedException e)
{
System.out.println("interrupted yo");
}
}
}
}).start();
}
}
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class SquareKaro
{
public static void main(String[] args)
{
BlockingQueue<Integer> number = new LinkedBlockingQueue<>();
BlockingQueue<SquareResult> result = new LinkedBlockingQueue<>();
Squarer mysquarer = new Squarer(number, result);
mysquarer.start();
try
{
System.out.println("Hey another process, give me square of => 54");
number.put(54);
System.out.println(result.take());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public class SquareResult
{
private int input;
private int output;
public SquareResult(int in, int out)
{
this.input = in;
this.output = out;
}
@Override public String toString()
{
return input +" ka square hai "+output;
}
}