Académique Documents
Professionnel Documents
Culture Documents
try {
} catch (InterruptedException e) {
// Attendre un moment
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
monThread.interrupt();
}
synchronized (resource1) {
try {
} catch (InterruptedException e) {
e.printStackTrace();
synchronized (resource2) {
});
synchronized (resource2) {
try {
} catch (InterruptedException e) {
e.printStackTrace();
synchronized (resource1) {
});
thread1.start();
thread2.start();
class RessourcePartagee {
semaphore.acquire(); // Opération P
try {
valeur++;
} finally {
semaphore.release(); // Opération V
this.ressource = ressource;
try {
ressource.utiliserRessource();
} catch (InterruptedException e) {
e.printStackTrace();
}
thread.start();
4) En Java, un daemon thread (thread démon) est un thread qui s'exécute en arrière-plan
et ne bloque pas la terminaison du programme. Si tous les threads non démons se
terminent, le programme se termine, même si des threads démons sont toujours en cours
d'exécution. Les threads démons sont généralement utilisés pour effectuer des tâches de
fond, comme la collecte de statistiques ou la maintenance, et sont arrêtés lorsque tous les
threads non démons ont terminé.
Code :
while (true) {
try {
} catch (InterruptedException e) {
e.printStackTrace();
}
});
daemonThread.setDaemon(true);
daemonThread.start();
try {
} catch (InterruptedException e) {
e.printStackTrace();
import java.util.concurrent.locks.ReentrantLock;
this.id = id;
this.leftFork = leftFork;
this.rightFork = rightFork;
leftFork.lock();
rightFork.lock();
try {
} finally {
rightFork.unlock();
leftFork.unlock();
}
@Override
try {
while (true) {
penser();
manger();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
int nombrePhilosophes = 5;
new Thread(philosophes[i]).start();
6)
Le problème des lecteurs-rédacteurs est un autre problème classique de
synchronisation dans les systèmes multithreadés. Il implique un ensemble de threads
lecteurs et un ensemble de threads rédacteurs qui partagent une ressource (par exemple,
une base de données). Les lecteurs peuvent accéder à la ressource simultanément, mais les
rédacteurs ont un accès exclusif.
Code :
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
this.id = id;
this.verrou = verrou;
verrou.readLock().lock();
try {
} finally {
verrou.readLock().unlock();
@Override
try {
while (true) {
lire();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
this.id = id;
this.verrou = verrou;
verrou.writeLock().lock();
try {
} finally {
verrou.writeLock().unlock();
@Override
try {
while (true) {
ecrire();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
int nombreLecteurs = 5;
int nombreRedacteurs = 2;
7)