Tengo un programa que realiza cálculos de larga duración, por lo que quiero acelerar su rendimiento. Así que traté de lanzar 3 hilos en este momento, pero java.exe
aún ocupa el 25% del uso de la CPU (por lo tanto, solo se usa una CPU), y permanece incluso si trato de usar .setPriority(Thread.MAX_PRIORITY);
y establezco la prioridad de java.exe
en tiempo real (24) . Traté de usar RealtimeThread
pero parece que funciona aún más lento. Sería perfecto si cada subproceso se asignara a un procesador y el uso total de la CPU aumentara al 75%, pero no sé cómo hacerlo. Y así es como se ve mi código en este momento:¿Por qué mi programa enhebrado solo usa una CPU?
Thread g1 = new MyThread(i,j);
g1.setPriority(Thread.MAX_PRIORITY);
g1.run();
Thread g2 = new MyThread(j,i);
g2.setPriority(Thread.MAX_PRIORITY);
g2.run();
Thread g3 = new MyThread(i,j);
g3.setPriority(Thread.MAX_PRIORITY);
g3.run();
if (g1.isAlive()) {
g1.join();
}
if (g2.isAlive()) {
g2.join();
}
if (g3.isAlive()) {
g3.join();
}
Use '.start()' como lo han señalado otros, y entonces * probablemente * quiera dejar la programación en el planificador en lugar de jugar con las prioridades usted mismo. A menos que sepa * bastante * mucho sobre la programación de hilos, las posibilidades de hacer el trabajo del planificador mejor que las que tiene son escasas (en el mejor de los casos). –
posible duplicado de [java thread - run() y start() métodos] (http://stackoverflow.com/questions/3027495/java-thread-run-and-start-methods) –