Jep. Jeg har dog selv kun brugt Thread.MIN_PRIORITY, Thread.NORM_PRIORITY og Thread.MAX_PRIORITY som anbefales af platformsuafhængige årsager. Har du problemer med at få det til at virke?
Dette giver et rimelig godt billede af det: public class TestThreads {
public TestThreads(int id, int priority) { MyThread t = new MyThread(id); t.setPriority(priority); t.start(); } private class MyThread extends Thread {
private int id; private int work = 1000000;
public MyThread(int id) { this.id = id; }
public void run() { long start = System.currentTimeMillis(); while( !interrupted() && work >= 0) { work--; if( work == 0) System.out.println ("Thread nr: " +id+ " is done! Time: " +(System.currentTimeMillis()-start)); } } } }
class TestIt { public static void main(String[] args) { new TestThreads(1, Thread.MIN_PRIORITY); new TestThreads(2, Thread.NORM_PRIORITY); new TestThreads(3, Thread.MAX_PRIORITY); } }
Microsoft Windows XP [version 5.1.2600] java version "1.4.1_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01) Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)
Test med work sat til: 10000000. Thread nr: 3 is done! Time: 2793 Thread nr: 2 is done! Time: 5587 Thread nr: 1 is done! Time: 5438
Der er meget lidt, hvis ingen forskel på den mindste prioritet og den normale prioritet. Max prioriteten får dog 50% mere cpu tid end de andre.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.