Contenu supplémentaire :
Synchronisation et communication entre les threads
Problème : Les fils de discussion peuvent interférer les uns avec les autres lors de l'accès aux données partagées.
Solution :
Méthodes synchronisées
synchronized void synchronizedMethod() { // Código sincronizado }
Blocs synchronisés :
synchronized (this) { // Código sincronizado }
Exemple de communication :
Communication entre les threads utilisant wait(), notify() et notifyAll() :
class SharedResource { private boolean flag = false; synchronized void produce() { while (flag) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Producing..."); flag = true; notify(); } synchronized void consume() { while (!flag) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Consuming..."); flag = false; notify(); } } public class ThreadCommunication { public static void main(String[] args) { SharedResource resource = new SharedResource(); Thread producer = new Thread(resource::produce); Thread consumer = new Thread(resource::consume); producer.start(); consumer.start(); } }
Conclusion
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!