В продолжении последнего дз реализовать копирование файла, но для синхронизации использвать ReentrantReadWriteLock
,
запуск потоков выполнять черезе ServiceExecutor
(создать пул на 10 потоков)
Ниже представлен пример, в котором демонстрируется ситуация deadlock (взаимной блокировки). Необходимо исправить программу так, что бы азаимной блокировки не было.
public class DeadLock {
static Object Lock1 = new Object();
static Object Lock2 = new Object();
private static class Thread1 extends Thread {
public void run() {
synchronized (Lock1) {
System.out.println("Thread 1: Has Lock1");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
System.out.println("Thread 1: Waiting for Lock 2");
synchronized (Lock2) {
System.out.println("Thread 1: No DeadLock");
}
}
}
}
private static class Thread2 extends Thread {
public void run() {
synchronized (Lock2) {
System.out.println("Thread 2: Has Lock2");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
System.out.println("Thread 2: Waiting for Lock 1");
synchronized (Lock1) {
System.out.println("Thread 2: No DeadLock");
}
}
}
}
public static void main(String args[]) {
Thread1 thread1 = new Thread1();
Thread2 thread2 = new Thread2();
thread1.start();
thread2.start();
}
}