Prioridade de processos

Alguém sabe como colocar o sistema com prioridade alta na fila de processos, estou usando Java 1.5 e Windows XP…

Não sei se é possível, mas vc poderia chamar sua aplicação através de outra usando a classe ProcessBuilder, já cheguei a utiliza-la mas agora não me recordo se vc consegue criar o processo com “X” prioridade, mas vale a pena dar uma olhada…Também existe a classe Process que realiza tarefas semelhantes…Vai ter que rolar uma pesquisada, mas acredito que o caminho das pedras seja esse :wink:

ps: No windows XP se não me engano a variação de prioridade de 1 processo vai de 0 a 31.

[]s

A prioridade do processo é definido pelo SO, não pelo Java.

Seu SO deve ter comandos específicos para isso.

[quote]A prioridade do processo é definido pelo SO, não pelo Java.

Seu SO deve ter comandos específicos para isso.[/quote]

em Delphi, por exemplo dá p/ controlar com o comando

SetPriorityClass(GetCurrentProcess, HIGH_PRIORITY_CLASS);

…então provavelmente em java também deve ser possível, estou pesquisando a dica do “paulovittor23”, e assim que conseguir algo já posto a resposta aqui…

vlw galera…

Experimente iniciar seu programa com “start /HIGH java SeuPrograma” e veja se ajuda alguma coisa. Se ajudar, crie um script para iniciar seu programa, e faça-o sempre pelo script. Isso é uma solução 100% Java (já que é fácil de modificar; se você precisar rodar seu programa no Unix, basta usar “nice java SeuPrograma” e o resultado será o mesmo.)

(Acho é que mexer em prioridades de programas vai atrapalhar, diga-se de passagem. É melhor investigar qual é o programa que roda nesse computador que está “atrapalhando” o seu programa, e iniciá-lo com prioridade mais baixa.)

Você consegue alterar a prioridade de uma thread da sua aplicação, mas não a prioridade dela. Olhe o javadoc de java.lang.Thread.

…na verdade o sistema tem que movimentar motores de passo através da porta paralela, e toda vez que o escalonador do SO entra em ação os motores perdem performance… entaum o sistema não vai ficar com alta prioridade o tempo todo, mas somente quando os motores estiverem funcionando… eu fiz alguns testes com “start /HIGH java SeuPrograma” da dica do “thingol”, e funcionou… mas infelizmente não vou conseguir usar desta maneira… mas vlw a atenção de todos… e continuo na pesquisa, assim que conseguir eu coloco n post…

Movimentar motor de passo?

Isso, a rigor, exigiria que você escrevesse um device driver em C para o Windows, para que você pudesse desabilitar as interrupções no momento adequado, para que o “timing” fosse absolutamente preciso.

Você pode fazer o seguinte: iniciar o processo como “real-time” (veja uma das opções do “start”), e baixar a prioridade de todas as threads, exceto a que faz o controle dos motores, para que não atrapalhe os outros processos do Windows. Mas isso é um “quebra-galho”).