Récemment, je maintiens un projet Java, et dans le groupe nous discutons des avantages et des inconvénients de Java ! Malheureusement, certains fans ultimes de Java affirment toujours que les performances ne sont plus aussi mauvaises que celles du C++, et que de nombreuses bibliothèques standard sont écrites par des maîtres, quelle est leur stabilité, etc. Je l'ai simplement étudié attentivement, et l'une des instructions qu'ils m'ont données était que pour transmettre des messages entre les threads, il suffisait d'utiliser BlockingQueue, qui a été encapsulé en Java.
Puisque c'est suffisant, écrivons du code pour le tester. Écrivons simplement un petit programme et faisons quelques tests :
importer base.MyRunnable ;
Test de classe publique
{
public static void main (String[] arguments)
{
BlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>();
java.lang.Runnable r = new MyRunnable(file d'attente);
Fil t = nouveau fil(r);
t.start();
tandis que (vrai)
{
essayer
{
tandis que (vrai)
{
pour (int je =0;i < 10000;i++)
{
file d'attente.offre(i);
}
}
}
attraper (exception e)
{
e.printStackTrace();
}
}
}
}
//Packages qui doivent être ajoutés
base de paquet ;
importer java.lang.Runnable ;
importer java.util.concurrent.* ;
importer java.util.* ;
classe publique MyRunnable implémente Runnable
{
public MyRunnable (file d'attente BlockingQueue<Integer>)
{
this.queue = file d'attente ;
}
exécution publique vide()
{
Date d = nouvelle Date();
heure de début longue = d.getTime();
System.err.println(heure de début);
nombre entier = 0 ;
tandis que (vrai)
{
essayer
{
Entier i = this.queue.poll();
si(i != nul)
{
compte++;
}
si (compte == 100 000)
{
Date e = nouvelle Date();
heure de fin longue = e.getTime();
System.err.println(count);
System.err.println(heure de fin);
System.err.print (heure de fin - heure de début);
casser;
}
}
attraper (exception e)
{
}
}
}
file d'attente privée BlockingQueue<Integer> ;
}
J'ai utilisé offer et poll dans le code de test ci-dessus. Jetons un coup d'œil à ces deux fonctions d'implémentation. La première est l'offre.