Hoy miré el programa concurrente de Java, escribí un programa de entrada y establecí la prioridad del hilo.
class Elem implementa Runnable{ public static int id = 0; private int cutDown = 5; public void setPriority(int prioridad){ this.priority = prioridad } public int getPriority(){ return this.priority } void run(){ Thread.currentThread().setPriority(prioridad); int threadId = id++ while(cutDown-->; 0){ doble d = 1,2; mientras(d < 10000) d = d + (Math.E + Math.PI)/d; System.out.println("#" + threadId + "(" + cutDown + ") "); } }}clase pública básica { public static void main(String args[]){ for(int i = 0; i < 10; i++){ Elem e = new Elem(); if(i == 0 ) e.setPriority(Thread.MAX_PRIORITY); else e.setPriority(Thread.MIN_PRIORITY); Hilo t = nuevo Hilo(e);
Debido a que la máquina es muy poderosa, al principio no vi el efecto concurrente. Parecía que se ejecutaba en secuencia, por lo que se agregaron operaciones de punto flotante en el medio para retrasar el tiempo.
Por supuesto, los Ejecutores se pueden utilizar para gestionar subprocesos en la función principal.
import java.util.concurrent.*;class Elem implementa Runnable{ public static int id = 0; private int cutDown = 5; public int getPriority(int prioridad){ this.priority = prioridad; ){ return this.priority; } public void run(){ Thread.currentThread().setPriority(prioridad); id++; while(cutDown-- > 0){ doble d = 1.2; while(d < 10000) d = d + (Math.E + Math.PI)/d; "(" + cutDown + ")"); } }}clase pública Básica { public static void main(String args[]){// for(int i = 0; i < 10; i++){// Elem e = new Elem();// if(i == 0 )// e.setPriority(Thread.MAX_PRIORITY);// else// e.setPriority(Thread.MIN_PRIORITY);/ /Thread t = new Thread(e);// t.start();// } ExecutorService exec = Executors.newCachedThreadPool(); for(int i = 0; i < 10; i++){ Elem e = new Elem(); if(i == 0 ) e.setPriority(Thread.MAX_PRIORITY); .MIN_PRIORITY); exec.execute(e); } exec.shutdown();