Sortowanie zadań

0

Kumpel ze studiów poprosił, abym zrobił mu moduł w javie. Normalnie nie programuję w czystej javie, więc mam parę pytań.
Kod powinien bez problemu dodawać nowe zadania, zmieniać ich priorytety i kompilować się pod Linuxem.
Przykład tego jak przebiega program:

pushjob 1 100
pushjob 2 102
pushjob 3 50
changejob 2 200
highestpriority
< 2

Pushjob dodaje zadanie do listy (parametry to kolejno numer zadania i jego priorytet), changejob zmienia priorytet w wybranym wątku, a highestpriority zwraca numer zadania z największym priorytetem.

Zamierzam stworzyć tablicę z obiektami dziedziczącymi z klasy Thread i w prosty sposób nimi manipulować. Wydaje się to proste. Zbyt poste. Myślicie, że będzie dobrze? I czy programowanie w javie różni się czymś, jeżeli chcę, aby kod kompilował się na Linuxie? W jaki sposób mogę określać priorytet w/w sposób, bo z tego co pamiętam skala jest 1-10?

0

Z tego co pamiętam z książki "Java - techniki zaawansowane" priorytety w Javie są od 1-10 i Java przydziela odpowiednie wartości w zależności od systemu na jakim jest uruchomiony program bo w różnych systemach istnieje różna ilość priorytetów.

0

Obecny JVM nie obsługuje priorytetów wątków na Linuksie.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4813310

ale ponoć w OpenJDK da się coś takiego zrobić, gdzies kiedys przeczytałem.

0

Gdzie jest niby napisane, że program ma rzeczywiście ustawiać priorytety wątkom i wykonywać jakieś zadania?
On ma to tylko symulować.

Moim zdaniem wystarczy użyć PriorityQueue:
http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

0

A tu : " Kod powinien bez problemu dodawać nowe zadania, zmieniać ich priorytety i kompilować się pod Linuxem."

0

"Kod powinien bez problemu dodawać nowe zadania"
Czyli pushjob można wykonywać dowolną liczbę razy. Nie jest wyspecyfikowanie, co ma robić dodanie zadania. Wystarczy wrzucić informację o zadaniu do jakiejś kolekcji.

"zmieniać ich priorytety"
Odnajdujemy zadanie i zmieniamy priorytet

"i kompilować się pod Linuxem."
Jeżeli użyjesz Anta/Mavena to projekt powinien kompilować się bez problemu zarówno pod Linuksem, jak i pod Windowsem.

0

Minęło sporo czasu, ale dla tych, którzy będę zainteresowani, podaje plik źródłowy:
http://codetidy.com/4374/projekt

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