JavaRush /Blog Java /Random-ES /Nivel 28. Respuestas a las preguntas de la entrevista sob...
zor07
Nivel 31
Санкт-Петербург

Nivel 28. Respuestas a las preguntas de la entrevista sobre el tema del nivel.

Publicado en el grupo Random-ES
¡Hola a todos! Decidí continuar mis estudios en Javarash, a pesar de que ya había encontrado trabajo en Java. Nivel 28. Respuestas a las preguntas de la entrevista sobre el tema del nivel - 1Escribo este blog para mí, con mucha pereza y, se podría decir, bajo presión. Estaré muy feliz si alguien lo encuentra útil, pero no debes usarlo como fuente principal para encontrar respuestas a preguntas de nivel.

1. ¿Cuáles son las prioridades de los hilos?

Cada hilo del sistema tiene su propia prioridad. La prioridad es un número en el objeto del hilo del 1 al 10, y un valor más alto indica una prioridad más alta. El sistema ejecuta primero los subprocesos de mayor prioridad y los subprocesos de menor prioridad reciben tiempo de CPU solo cuando sus contrapartes más privilegiadas están inactivas. Puede trabajar con prioridades de subprocesos utilizando dos funciones:
void setPriority(int priority) //устанавливает приоритет потока.
Los posibles valores de prioridad son MIN_PRIORITY, NORM_PRIORITY y MAX_PRIORITY.
int getPriority() // получает приоритет потока.
Fuente Si no se especifica la prioridad, el hilo recibe prioridad 5: media. La prioridad del hilo no afecta en gran medida su funcionamiento, sino que tiene un carácter más bien consultivo. Si hay varios subprocesos inactivos que deben iniciarse, la máquina Java iniciará primero el subproceso con mayor prioridad. La máquina Java gestiona los subprocesos como mejor le parezca. Los hilos de baja prioridad no estarán inactivos. Simplemente recibirán menos tiempo que otros, pero aun así serán ejecutados. En la mayoría de los casos, los subprocesos siempre se ejecutan con la misma prioridad. Intentar darle a un hilo más tiempo que a otros a menudo indica un error arquitectónico en el programa.

2. ¿Es posible detener un hilo reduciendo su prioridad a 0?

No. será arrojadoIllegalArgumentException

3. ¿Por qué se necesita la clase ThreadGroup?

Para evitar que cualquier hilo se detenga e interrumpa todos los hilos seguidos, se introdujo el concepto de "grupo de hilos". Un hilo sólo puede afectar a otros hilos que estén contenidos en el mismo grupo que él. ThreadGroupes una clase que gestiona grupos de hilos. Este enfoque le permite proteger los hilos de cambios no deseados. A veces tienes que ejecutar código en el que no puedes confiar al 100%. Por tanto, conviene colocar todos sus hilos en un grupo separado y evitar que interfieran con el trabajo del grupo principal de hilos. En otras palabras, para gestionar grupos de hilos.

4. ¿A qué grupo de subprocesos pertenece el subproceso principal?

main

5. ¿Qué es el patrón ThreadPool?

En términos generales, un patrón ThreadPooles un grupo de hilos que resuelven grupos de problemas. Las tareas se organizan en una cola. Una vez que un hilo termina de trabajar en una tarea, solicita la siguiente tarea de la cola hasta que se hayan completado todas las tareas de la cola. Después de esto, el hilo puede finalizar o entrar en suspensión hasta que aparezcan nuevas tareas en la cola.

6. ¿Por qué necesitamos la clase ThreadPoolExecutor?

Resolver una gran cantidad de pequeños problemas con un grupo de hilos. El uso de una clase evita el desperdicio de recursos de la máquina. Porque crear tu propio hilo para cada tarea no es muy racional. La máquina Java asigna una gran cantidad de recursos para cada hilo. En otras palabras, crear y destruir un hilo gastado puede desperdiciar más recursos y tiempo que la tarea misma. Los desarrolladores de Java han encontrado una solución elegante a este problema: ThreadPoolExecutor. Esta es una clase que tiene dos cosas dentro:
  • Una cola de tareas a la que puede agregar tareas tal como aparecen en el programa.
  • Grupo de subprocesos (grupo de subprocesos): que realizan estas tareas.
En este caso, los hilos no se destruyen después de completar la tarea, sino que se quedan dormidos. Para comenzar a completar una nueva tarea tan pronto como aparezca.

7. ¿Cuántas formas de crear un hilo conoces? (Subproceso, ejecutable, invocable )

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. ¿Para qué se utiliza la clase Future?

Este objeto se puede utilizar para saber si una tarea ya se ha completado y también para obtener el resultado de su ejecución. boolean cancel(boolean mayInterrupt); // Останавливает задачу.
boolean isCancelled(); //devoluciones true, если задача была остановлена.
boolean isDone(); //devoluciones true, если выполнение задачи завершено.
V get() throws InterruptedException, ExecutionException; //devoluciones результат вызова метода call o кидает исключение, если оно было.

9. ¿Cuáles son las ventajas de Callable sobre Runnable?

Usando Callablepodemos averiguar si la tarea se ha completado y descubrir su resultado, mucho más fácil que usandoRunnable

10. ¿Es posible cancelar la ejecución de una tarea si utilizamos la clase Future?

Es posible si la tarea está en la cola y espera ejecución; de lo contrario, no es un hecho.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION