Seit kurzem pflege ich ein Java-Projekt und in der Gruppe unterhalten wir uns über die Vor- und Nachteile von Java! Leider behaupten einige ultimative Java-Fans immer, dass die Leistung nicht mehr so schlecht ist wie bei C++, und dass viele Standardbibliotheken von Meistern geschrieben wurden, wie stabil sie sind usw. Ich habe es einfach sorgfältig studiert und eine der Anweisungen, die sie mir gegeben haben, war, dass es zur Übermittlung von Nachrichten zwischen Threads ausreicht, BlockingQueue zu verwenden, das in Java gekapselt wurde.
Da dies ausreicht, schreiben wir einfach Code zum Testen: Schreiben Sie einfach ein kleines Programm und führen Sie einige Tests durch:
import base.MyRunnable;
Öffentlicher Klassentest
{
public static void main(String[] args)
{
BlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>();
java.lang.Runnable r = new MyRunnable(queue);
Thread t = neuer Thread(r);
t.start();
while(true)
{
versuchen
{
while(true)
{
for(int i =0;i < 10000;i++)
{
queue.offer(i);
}
}
}
Catch (Ausnahme e)
{
e.printStackTrace();
}
}
}
}
//Pakete, die hinzugefügt werden müssen
Paketbasis;
import java.lang.Runnable;
import java.util.concurrent.*;
import java.util.*;
Die öffentliche Klasse MyRunnable implementiert Runnable
{
public MyRunnable(BlockingQueue<Integer> queue)
{
this.queue = Warteschlange;
}
public void run()
{
Datum d = neues Datum();
lange Startzeit = d.getTime();
System.err.println(starttime);
int count = 0;
while(true)
{
versuchen
{
Ganzzahl i = this.queue.poll();
if(i != null)
{
count++;
}
if(count == 100000)
{
Datum e = neues Datum();
lange Endzeit = e.getTime();
System.err.println(count);
System.err.println(endtime);
System.err.print(endtime - starttime);
brechen;
}
}
Catch (Ausnahme e)
{
}
}
}
private BlockingQueue<Integer>-Warteschlange;
}
Ich habe im obigen Testcode „offer“ und „poll“ verwendet. Schauen wir uns diese beiden Implementierungsfunktionen an