JavaRush /Blog Jawa /Random-JV /Tingkat 28. Wangsulan pitakonan wawancara babagan topik t...
zor07
tingkat
Санкт-Петербург

Tingkat 28. Wangsulan pitakonan wawancara babagan topik tingkat

Diterbitake ing grup
Halo kabeh! Aku mutusaké kanggo nerusake sinau ing Javarash, sanajan aku wis nemokake proyek ing Jawa. Level 28. Wangsulan pitakonan wawancara babagan topik level - 1Aku nulis blog iki kanggo aku, banget lazily, lan, siji bisa ngomong, ing tekanan. Aku bakal seneng banget yen wong nemokake iku migunani, nanging sampeyan ora kudu nggunakake minangka sumber utama kanggo nemokake jawaban kanggo pitakonan tingkat.

1. Apa prioritas utami?

Saben thread ing sistem duwe prioritas dhewe. Prioritas minangka sawetara nomer ing obyek utas saka 1 nganti 10, kanthi nilai sing luwih dhuwur nuduhake prioritas sing luwih dhuwur. Sistem nglakokake utas prioritas sing luwih dhuwur dhisik, lan utas prioritas sing luwih murah nampa wektu CPU mung nalika mitra sing luwih ndarbeni hak istimewa ora aktif. Sampeyan bisa nggarap prioritas utas nggunakake rong fungsi:
void setPriority(int priority) //устанавливает приоритет потока.
Nilai prioritas sing bisa ditindakake yaiku MIN_PRIORITY, NORM_PRIORITY lan MAX_PRIORITY.
int getPriority() // получает приоритет потока.
Sumber Yen prioritas ora ditemtokake, banjur thread nampa prioritas 5 - medium. Prioritas utas ora mengaruhi operasine, nanging sifate menehi saran. Yen ana sawetara thread turu sing kudu diwiwiti, mesin Java bakal miwiti thread kanthi prioritas sing luwih dhuwur. Mesin Java ngatur benang sing cocog. Utas prioritas kurang ora bakal nganggur. Padha mung bakal nampa wektu kurang saka liyane, nanging isih bakal kaleksanan. Ing sawetara kasus, utas tansah mbukak ing prioritas padha. Nyoba menehi siji thread luwih wektu tinimbang liyane asring nuduhake kesalahan arsitektur ing program.

2. Apa bisa kanggo mungkasi thread kanthi ngurangi prioritas kanggo 0?

Ora. Bakal dibuwangIllegalArgumentException

3. Kenapa kelas ThreadGroup dibutuhake?

Kanggo nyegah Utas saka mandeg lan interrupting kabeh Utas ing baris, konsep "klompok Utas" ngenalaken. Utas mung bisa mengaruhi utas liyane sing ana ing grup sing padha. ThreadGroupyaiku kelas sing ngatur klompok utas. Pendekatan iki ngidini sampeyan nglindhungi thread saka owah-owahan sing ora dikarepake. Kadhangkala sampeyan kudu mbukak kode sing ora bisa dipercaya 100%. Mulane, luwih trep kanggo nyelehake kabeh benang ing klompok sing kapisah lan nyegah supaya ora ngganggu karya kelompok utas utama. Ing tembung liyane, kanggo ngatur klompok Utas

4. Utas utama kalebu klompok apa?

main

5. Apa pola ThreadPool

Ing istilah umum, pola ThreadPoolminangka klompok utas sing ngrampungake klompok masalah. Tugas diatur dadi antrian. Sawise utas rampung nggarap tugas, dheweke njaluk tugas sabanjure saka antrian nganti kabeh tugas ing antrian wis rampung. Sawise iki, utas bisa mungkasi utawa turu nganti tugas anyar katon ing antrian.

6. Napa kita kudu kelas ThreadPoolExecutor?

Kanggo ngatasi akeh masalah cilik karo klompok benang. Nggunakake kelas supaya nggunakake boros sumber daya mesin. Amarga nggawe thread dhewe kanggo saben tugas ora rasional banget. Mesin Java nyedhiyakake cukup akeh sumber daya kanggo saben thread. Ing tembung liyane, nggawe lan ngancurake thread sing dibuwang bisa mbuwang sumber daya lan wektu luwih akeh tinimbang tugas kasebut. Pangembang Jawa wis teka karo solusi elegan kanggo masalah iki - ThreadPoolExecutor. Iki minangka kelas sing ana rong perkara ing njero:
  • Antrian tugas sing bisa ditambahake tugas nalika katon ing program.
  • Pool of threads (klompok utas) - sing nindakake tugas kasebut.
Ing kasus iki, benang ora dirusak sawise ngrampungake tugas, nanging turu. Kanggo miwiti ngrampungake tugas anyar sanalika katon.

7. Carane akeh cara kanggo nggawe thread ngerti? (Thread, Runnable, Callable )

public class ThreadsTests {
    //Способ 1
    static class ThreadExampleRunnable implements Runnable{
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
    }

    //Способ 2
    static class ThreadExampleFromThread extends Thread {
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
    }

    //Способ 3
    static class ThreadExampleFromCallable implements Callable{
        @Override
        public String call() throws Exception {
            return Thread.currentThread().getName();
        }
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        new Thread(new ThreadExampleRunnable()).start(); //Способ 1
        new ThreadExampleFromThread().start(); //Способ 2

        //Способ 3
        ExecutorService service = Executors.newFixedThreadPool(5);
        Future task = service.submit(new ThreadExampleFromCallable());
        System.out.println(task.get());

    }
}

8. Apa kelas Future digunakake kanggo?

Objek iki bisa digunakake kanggo ngerteni apa tugas wis rampung, lan uga kanggo entuk asil eksekusi. boolean cancel(boolean mayInterrupt); // Останавливает задачу.
boolean isCancelled(); //returns true, если задача была остановлена.
boolean isDone(); //returns true, если выполнение задачи завершено.
V get() throws InterruptedException, ExecutionException; //returns результат вызова метода call or кидает исключение, если оно было.

9. Apa kaluwihan Callable saka Runnable?

Nggunakake Callablekita bisa mangerteni apa tugas wis rampung, lan nemokake asil, luwih gampang saka nggunakakeRunnable

10. Apa bisa mbatalake eksekusi tugas yen nggunakake kelas Future?

Bisa uga yen tugas ana ing antrian lan ngenteni eksekusi, yen ora kasunyatan
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION