Hoje olhei para o programa simultâneo Java, escrevi um programa de entrada e defini a prioridade do thread.
class Elem implementa Runnable{ public static int id = 0; private int getPriority(){ return this.priority } public; void run(){ Thread.currentThread().setPriority(priority); int threadId = id++; 0){ duplo d = 1,2; while(d < 10000) d = d + (Math.E + Math.PI)/d; System.out.println("#" + threadId + "(" + cutDown + ") "); } }}public class Basic { 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); senão e.setPriority(Thread.MIN_PRIORITY);
Como a máquina é muito poderosa, não vi o efeito simultâneo no início. Parecia que era executado em sequência, então operações de ponto flutuante foram adicionadas no meio para atrasar o tempo.
Claro, os Executores podem ser usados para gerenciar threads na função principal.
import java.util.concurrent.*;class Elem implementa Runnable{ public static int id = 0; private int cutDown = 5; ){ retornar this.priority } public void run(){ Thread.currentThread().setPriority(priority) id++; while(cutDown-- > 0){ double d = 1.2; while(d < 10000) d = d + (Math.E + Math.PI)/d; "(" + cutDown + ")"); public class Basic { 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(); .MIN_PRIORITY);exec.execute(e);