35 lines
856 B
Java
35 lines
856 B
Java
package reentrantrwlock;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
|
|
public class ReaderSimulation implements Runnable {
|
|
|
|
// Maximum time taken by a user to read a single title
|
|
private static final int MAX_READING_TIME = 10;
|
|
private static final Random generator = new Random();
|
|
private final MovieCatalog myCatalog;
|
|
|
|
public ReaderSimulation(MovieCatalog myCatalog) {
|
|
this.myCatalog = myCatalog;
|
|
}
|
|
|
|
private void read() throws Exception {
|
|
int time = generator.nextInt(MAX_READING_TIME);
|
|
Thread.sleep(time);
|
|
}
|
|
|
|
public void run() {
|
|
try {
|
|
List<String> titles = myCatalog.getTitles();
|
|
for (int i = 0; i < titles.size(); i++) {
|
|
read();
|
|
}
|
|
System.out.println("[" + Thread.currentThread().getName()
|
|
+ "]: I've finished reading movie titles");
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
System.exit(1);
|
|
}
|
|
}
|
|
}
|