add readme
This commit is contained in:
parent
8bb915ce5c
commit
8c63bec955
|
@ -0,0 +1,32 @@
|
|||
Implement a class `Exchanger<T>` that is usable to exchange an object
|
||||
of type `T` between exactly two threads:
|
||||
|
||||
```java
|
||||
class Exchanger<T> {
|
||||
// your task
|
||||
T exchange(T s) {
|
||||
// your task
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Every thread invokes method `exchange()` with the object it wants to pass to the other thread and
|
||||
receives as the result of that invocation the object that the other thread has passed. Make sure that
|
||||
your code works even when both threads happen to pass the same object.
|
||||
|
||||
Initially, your Exchanger should be usable for a single exchange only. Then, add functionality to make
|
||||
it usable repeatedly by the same two threads. In a third step, extend your class to make it usable by
|
||||
any number of threads: Each time, the "next two" threads perform an exchange among each other;
|
||||
note that in this scenario it may happen that a thread uses an exchanger where the previous exchange
|
||||
has not yet finished.
|
||||
|
||||
In the source code folder on the server you'll find a class `ExchangerTester` that tests your
|
||||
`Exchanger` (only for a single exchange; you can extend it yourself so as to test a series of exchanges).
|
||||
The output of that program should look as follows:
|
||||
|
||||
```
|
||||
Main thread received World in exchange for Hello
|
||||
2nd thread received Hello in exchange for World
|
||||
2nd thread received 2337 in exchange for 2337
|
||||
Main thread received 2337 in exchange for 2337
|
||||
```
|
Loading…
Reference in New Issue