A
Anakin77
Mitglied
Kann bitte jemand mal das folgende Javaprogramm testen?
Die Links:
http://www.netphantom.de/down/Threadtest.class
http://www.netphantom.de/down/Threadtest.java
Das Programm benötigt eine Java Virtual Machine. Man kann es wie folgt starten:
java Threadtest.class 1024
Dies würde dann 1024 Threads erzeugen, welches unter einem 2.4er Kernel nicht funktioniert hat, da es dort eine Grenze gibt. Wenn also jemand einen laufenden 2.6er Kernel und eine JVM hat, dann würde ich mich sehr freuen, wenn er dieses kleine Programm mal testen könnte (wie viele Threads erzeugt werden können bevor eine Fehlermeldung wie OutofMemoryException erscheint).
Der Quellcode:
Die Links:
http://www.netphantom.de/down/Threadtest.class
http://www.netphantom.de/down/Threadtest.java
Das Programm benötigt eine Java Virtual Machine. Man kann es wie folgt starten:
java Threadtest.class 1024
Dies würde dann 1024 Threads erzeugen, welches unter einem 2.4er Kernel nicht funktioniert hat, da es dort eine Grenze gibt. Wenn also jemand einen laufenden 2.6er Kernel und eine JVM hat, dann würde ich mich sehr freuen, wenn er dieses kleine Programm mal testen könnte (wie viele Threads erzeugt werden können bevor eine Fehlermeldung wie OutofMemoryException erscheint).
Der Quellcode:
Code:
import java.lang.Thread;
public class Threadtest extends Thread
{
public static int threadcounter=0;
public Threadtest() {}
public static void main(String[] args)
{
Thread [] t = new Thread[20000];
Integer anzahl;
int anz=0;
// nur einen Parameter
if (args.length == 1)
{
// Übergebene Zeichenkette in int wandeln
try
{
anzahl = new Integer(args[0]);
anz = anzahl.intValue();
}
catch(Exception e)
{
System.out.println("Bitte gueltige Zahl zwischen
2 und 20000 eingeben!");
System.exit(2);
}
// 20000 Threads würden reichen !
if (anz>20000)
{
System.out.println("Maximum ist 20000!");
System.exit(2);
}
// Mehr Threads, sonst ist der Test sinnlos!
if (anz<2)
{
System.out.println("Minimum ist 2!");
System.exit(2);
}
System.out.print("Erzeuge ");
System.out.print(anz);
System.out.println(" Threads!");
Threadtest x = new Threadtest();
// gewünschte Anzahl Threads erzeugen. Referenzen in Thread-Array
for(int i=1;i<=anz;i++)
{
t[i] = new Thread(x);
t[i].start();
System.out.print("Thread Nummer ");
System.out.print(i);
System.out.println(" erzeugt!");
}
// Ende des Mainthreads!
System.out.print(threadcounter);
System.out.println(" Threads erfolgreich gestartet!");
}
else
{
System.out.println("Fehler: Anzahl der Threads (2-20000) als
Parameter, Bsp: java Threadtest 1000!");
}
}
public void run()
{
try {
// globalen Threadzähler erhöhen
threadcounter++;
// warten bis zum Crtl-C (oder der OutofMemoryException)
do
{ Thread.sleep(1000); }
while(true);
}
catch(Exception e){}
}
}
Zuletzt bearbeitet: