JavaRush /Blog Java /Random-MS /Aras 28. Jawapan kepada soalan temu bual mengenai topik a...
zor07
Tahap
Санкт-Петербург

Aras 28. Jawapan kepada soalan temu bual mengenai topik aras

Diterbitkan dalam kumpulan
Hai semua! Saya memutuskan untuk menyambung pelajaran saya di Javarash, walaupun pada hakikatnya saya telah pun mendapat pekerjaan di Jawa. Tahap 28. Jawapan kepada soalan temu bual mengenai topik tahap - 1Saya menulis blog ini untuk diri saya sendiri, sangat malas, dan, boleh dikatakan, di bawah tekanan. Saya akan sangat gembira jika seseorang mendapati ia berguna, tetapi anda tidak seharusnya menggunakannya sebagai sumber utama untuk mencari jawapan kepada soalan aras.

1. Apakah keutamaan benang?

Setiap thread dalam sistem mempunyai keutamaan tersendiri. Keutamaan ialah beberapa nombor dalam objek benang dari 1 hingga 10, dengan nilai yang lebih tinggi menunjukkan keutamaan yang lebih tinggi. Sistem melaksanakan utas keutamaan yang lebih tinggi dahulu, dan utas keutamaan yang lebih rendah menerima masa CPU hanya apabila rakan sejawatannya yang lebih istimewa melahu. Anda boleh bekerja dengan keutamaan benang menggunakan dua fungsi:
void setPriority(int priority) //устанавливает приоритет потока.
Nilai keutamaan yang mungkin adalah MIN_PRIORITY, NORM_PRIORITY dan MAX_PRIORITY.
int getPriority() // получает приоритет потока.
Sumber Jika keutamaan tidak dinyatakan, maka benang menerima keutamaan 5 - sederhana. Keutamaan benang tidak banyak mempengaruhi operasinya, tetapi bersifat nasihat. Jika terdapat berbilang benang tidur yang perlu dimulakan, maka mesin Java akan memulakan benang dengan keutamaan yang lebih tinggi terlebih dahulu. Mesin Java menguruskan benang mengikut keperluan. Benang keutamaan rendah tidak akan terbiar. Mereka hanya akan menerima lebih sedikit masa daripada yang lain, tetapi masih akan dilaksanakan. Dalam kebanyakan kes, benang sentiasa berjalan pada keutamaan yang sama. Cuba untuk memberikan satu utas lebih masa daripada yang lain sering menunjukkan ralat seni bina dalam program.

2. Adakah mungkin untuk menghentikan benang dengan mengurangkan keutamaannya kepada 0?

Tidak. Akan dibuangIllegalArgumentException

3. Mengapakah kelas ThreadGroup diperlukan?

Untuk mengelakkan sebarang utas daripada berhenti dan mengganggu semua utas berturut-turut, konsep "kumpulan utas" telah diperkenalkan. Satu utas hanya boleh menjejaskan urutan lain yang terkandung dalam kumpulan yang sama dengannya. ThreadGroupialah kelas yang mengurus kumpulan benang. Pendekatan ini membolehkan anda melindungi benang daripada perubahan yang tidak diingini. Kadangkala anda perlu menjalankan kod yang anda tidak boleh percaya 100%. Oleh itu, adalah mudah untuk meletakkan semua benangnya dalam kumpulan yang berasingan dan menghalangnya daripada mengganggu kerja kumpulan utama benang. Dalam erti kata lain, untuk menguruskan kumpulan benang

4. Kumpulan benang yang manakah tergolong dalam benang utama?

main

5. Apakah corak ThreadPool

Secara umum, corak ThreadPoolialah sekumpulan benang yang menyelesaikan kumpulan masalah. Tugasan disusun dalam baris gilir. Setelah benang selesai mengerjakan tugas, ia meminta tugas seterusnya daripada baris gilir sehingga semua tugas dalam baris gilir telah selesai. Selepas ini, benang boleh ditamatkan atau tidur sehingga tugasan baharu muncul dalam baris gilir.

6. Mengapakah kita memerlukan kelas ThreadPoolExecutor?

Untuk menyelesaikan sejumlah besar masalah kecil dengan sekumpulan benang. Menggunakan kelas mengelakkan penggunaan sumber mesin yang membazir. Kerana mencipta benang anda sendiri untuk setiap tugas tidak begitu rasional. Mesin Java memperuntukkan banyak sumber untuk setiap utas. Dalam erti kata lain, mencipta dan memusnahkan benang yang dibelanjakan boleh membuang lebih banyak sumber dan masa daripada tugas itu sendiri. Pembangun Java telah menghasilkan penyelesaian yang elegan untuk masalah ini - ThreadPoolExecutor. Ini ialah kelas yang mempunyai dua perkara di dalamnya:
  • Baris gilir tugas yang anda boleh tambahkan tugasan apabila ia muncul dalam program.
  • Kumpulan benang (kumpulan benang) – yang melaksanakan tugasan ini.
Dalam kes ini, benang tidak dimusnahkan selepas menyelesaikan tugas, tetapi tertidur. Untuk mula menyelesaikan tugasan baharu sebaik sahaja ia muncul.

7. Berapa banyak cara untuk mencipta benang yang anda tahu? (Benang, Boleh Dijalankan, Boleh Dipanggil )

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. Apakah kegunaan kelas Masa Depan?

Objek ini boleh digunakan untuk mengetahui sama ada tugasan telah selesai, dan juga untuk mendapatkan hasil pelaksanaannya. boolean cancel(boolean mayInterrupt); // Останавливает задачу.
boolean isCancelled(); //returns true, если задача была остановлена.
boolean isDone(); //returns true, если выполнение задачи завершено.
V get() throws InterruptedException, ExecutionException; //returns результат вызова метода call or кидает исключение, если оно было.

9. Apakah kelebihan Callable berbanding Runnable?

Menggunakan Callablekita boleh mengetahui sama ada tugas itu telah selesai, dan mengetahui hasilnya, lebih mudah daripada menggunakanRunnable

10. Adakah mungkin untuk membatalkan pelaksanaan tugas jika kita menggunakan kelas Masa Depan?

Ia mungkin jika tugas itu berada dalam baris gilir dan menunggu pelaksanaan, jika tidak, bukan fakta
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION