Finished assigment
commit
a8fc4660ac
|
@ -0,0 +1,57 @@
|
||||||
|
|
||||||
|
/*-
|
||||||
|
|
||||||
|
package main
|
||||||
|
import "fmt"
|
||||||
|
func tasker (o, r chan int, d chan bool) {
|
||||||
|
o <- 1; o <- 2
|
||||||
|
fmt.Println (<-r); d <- true
|
||||||
|
}
|
||||||
|
func add (o, r chan int) {
|
||||||
|
r <- ((<-o) + (<-o))
|
||||||
|
}
|
||||||
|
func main () {
|
||||||
|
operand, result := make(chan int), make(chan int)
|
||||||
|
done:= make(chan bool)
|
||||||
|
go tasker (operand, result, done)
|
||||||
|
go add (operand, result)
|
||||||
|
<-done
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.util.concurrent.BlockingQueue;
|
||||||
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
|
||||||
|
public class Sum {
|
||||||
|
public static void main(String... args) throws InterruptedException {
|
||||||
|
var operand = new LinkedBlockingQueue<Integer>();
|
||||||
|
var result = new LinkedBlockingQueue<Integer>();
|
||||||
|
var done = new LinkedBlockingQueue<Boolean>();
|
||||||
|
|
||||||
|
(new Thread(() -> tasker(operand, result, done))).start();
|
||||||
|
(new Thread(() -> add(operand, result))).start();
|
||||||
|
|
||||||
|
done.take();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void tasker(BlockingQueue o, BlockingQueue r, BlockingQueue d) {
|
||||||
|
o.offer(3);
|
||||||
|
o.offer(2);
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.println(r.take());
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
d.offer(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void add(BlockingQueue<Integer> o, BlockingQueue<Integer> r) {
|
||||||
|
try {
|
||||||
|
r.offer(Integer.valueOf(o.take()) + Integer.valueOf(o.take()));
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue