watki - wykorzystanie procesora

Odpowiedz Nowy wątek
2006-09-14 16:56
0

witam, czemu taki kod:

public class Test {
    public Thread t;

    public class T extends Thread {
        public T() {
            start();
        }
        public void run() {
            while(true){}
        }
    }
    public Test() {
        t = new T();
    }

    public static void main(String[] args) {
        Test test = new Test();
    }
}

zgodnie z informacja menadzera zadan windows wykorzystuje procesor na maxa??? mnie sie wydaje ze taki kod nie powinien tak obciazac procesor, jak w takim razie napisac watek ktory bedzie spelnial ta sama role ale nie obciazal tak procka ???

Pozostało 580 znaków

2006-09-14 17:33
0

Taki watek zawsze bedzie uzywal procka na maxa :P przeciez wykonuje caly czas petle - czyli pracuje. Daj tam jeszcze sleep(milisekundy) z jakims odpowiednio dobranym czasem.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-15 00:44
0

ze pracuje to nie znaczy ze wykorzystuje procka na maxa, windows tez pracuje i nie wykorzystuje procka na maxa, ja potrzebuje zeby watek pracowal caly czas podczas zycia programu, sleep mnie nie ratuje, nie chcer go uspic, chce zeby caly czas kontrolowal wartosc pewnej zmiennej

Pozostało 580 znaków

2006-09-17 11:54
0

ustaw Thread.MIN_PRIORITY. I tak obciążenie procesora będzie duże, ale system operacyjny będzie lepiej pracował

Pozostało 580 znaków

2006-09-17 23:22
0

No ale chyba nie musi sprawdzac wartosci tej zmiennej co 'kazdy' takt procesora, nie? Jak ustawisz sleep na np. 20 ms, to wrazenie bedzie takie samo, a proc odpocznie. Windows dziala, ale nie zzera proca wlasnie dlatego, ze wie kiedy ma z niego korzystac. Poza tym opiera sie raczej na zegarku sprzetowym, wiec to troche inna bajka.

Jesli chodzi o priorytet to jest to tylko rekomendacja dla jvm, wiec moze zadzialac, ale nie musi.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-18 10:02
0

Można by też spróbować, zrobić coś na wzór semafora binarnego, wątek czeka aż zajdzie zmiana danej zmiennej, dwie metody get i set z sychronizowane oraz wait() i notify(), motoda set ustawiałaby by zmienną i odpalała dalsze wykonywanie wątka, a jezeli zmiany nie zachodzą wątek czeka po przez wait().

Pozostało 580 znaków

2006-09-18 12:22
0

Jesli to twoja wlasna zmienna to w ogole nie ma sensu stosowac watku, tylko metody get, set. A jak jakas 'systemowa' to pomysl ol3j'a tez odpada, bo to nie ty ja ustawiasz...

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-10-17 21:41
0

LOL! start() powinno byc wywolywane w konstruktorze Test a nie T

pzodrawiam

Pozostało 580 znaków

2006-10-17 22:22
0
eximius napisał(a)

LOL! start() powinno byc wywolywane w konstruktorze Test a nie T

Niby czemu?

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-10-18 19:43
0

zauwaz, ze metode obsluguje watek w ktorym jest ona wywolywana.
nawet jesli jest to mozliwe, to na pewno sie tego nie stosuje.
jeszcze nie spotkalem sie z kodem w ktorym watek sam sie uruchamia.

pozdrawiam

Pozostało 580 znaków

2006-10-19 02:27
0
eximius napisał(a)

zauwaz, ze metode obsluguje watek w ktorym jest ona wywolywana.

No i?

eximius napisał(a)

nawet jesli jest to mozliwe, to na pewno sie tego nie stosuje.

Bo?

eximius napisał(a)

jeszcze nie spotkalem sie z kodem w ktorym watek sam sie uruchamia.

Co nie znaczy, ze nie mozna...

podrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0