En estas lecciones aprenderá a aprovechar el procesamiento multihilo para realizar más trabajo en la misma cantidad de tiempo.
En estas lecciones aprenderá a aprovechar el procesamiento multihilo para realizar más trabajo en la misma cantidad de tiempo. Repasaremos cómo los hilos permiten que un programa funcione de manera más eficiente al hacer varias cosas al mismo tiempo y cómo se usan para realizar tareas complicadas en segundo plano sin interrumpir el programa principal o hacer que se congele la pantalla.
Es posible que vea una pegatina en su computadora portátil que dice "Intel CORE i7" o algo similar, que le dice cuántos de estos procesadores tiene. Repasaremos cómo estos multiprocesadores permiten que cientos o incluso miles de procesos se ejecuten simultáneamente en una sola máquina.
Los programas deben escribirse para aprovechar estos procesadores, de lo contrario, gran parte de su computadora queda ociosa. Descubra cómo crear sus propios hilos y cómo configurarlos para que se adapten a un escenario de programación concreto.
Objetivos de aprendizaje:
- Identificar los hilos y cómo funcionan
- Explicar los estados de hilos y las transiciones
- Describir cómo funcionan los programadores de hilos
Habilidades que obtendrás
HyperthreadingArquitecturas JavaProcesadores multinúcleoProgramación multinúcleoMultihiloComponentes de ThreadingLo que aprenderás
- Identificar threads y explicar cómo funcionan dentro de un programa
- Describir los estados de los threads y las transiciones entre ellos
- Explicar cómo funcionan los planificadores de threads
- Crear sus propios threads y configurarlos para un escenario de programación particular
- Aprovechar el procesamiento multithreading para hacer más trabajo en la misma cantidad de tiempo
- Usar procesadores multi-núcleo para ejecutar múltiples procesos simultáneamente en una sola máquina
Puntos clave
- Los threads permiten que un programa funcione de manera más eficiente haciendo múltiples cosas al mismo tiempo.
- Los threads se utilizan para realizar tareas complicadas en segundo plano sin interrumpir el programa principal ni causar que la pantalla se congele.
- Los multiprocesadores permiten que cientos o incluso miles de procesos se ejecuten simultáneamente en una sola máquina.
- Los programas deben escribirse para aprovechar múltiples procesadores; de lo contrario, gran parte de la computadora queda inactiva.
- Puede crear sus propios threads y configurarlos para que se adapten a un escenario de programación particular.
Preguntas frecuentes
¿Qué aprenderé en este curso?
Aprenderá a aprovechar el procesamiento multithreading para hacer más trabajo en la misma cantidad de tiempo, cómo crear sus propios threads y cómo configurarlos para que se adapten a un escenario de programación particular. Los objetivos de aprendizaje son identificar threads y cómo funcionan, explicar los estados de los threads y las transiciones, y describir cómo funcionan los planificadores de threads.
¿Qué temas o lecciones cubre este curso?
El curso cubre tres lecciones: Thread Principal y Ejecución de Código, Ciclos de Vida de Threads y Pools de Threads y Planificadores.
¿Qué habilidades adquiriré en este curso?
Adquirirá habilidades en Hyperthreading, Arquitecturas de Java, Procesadores Multi-Núcleo, Programación Multi-Núcleo, Multithreading y Bloques de Construcción de Threading.
¿Por qué es importante el multithreading para el rendimiento?
Los threads permiten que un programa funcione de manera más eficiente haciendo múltiples cosas al mismo tiempo, y los procesadores multi-núcleo permiten que muchos procesos se ejecuten simultáneamente. Los programas deben escribirse para aprovechar estos procesadores; de lo contrario, gran parte de su computadora queda inactiva.
Transcripción
Transcripción
Saludos, bienvenido de nuevo. Scott Stanlick aquí. En estas lecciones vamos a echar un vistazo a la creación de subprocesos. Veremos el hilo principal de Java. Vamos a tener un pico en varios ciclos de vida de subprocesos. Echaremos un vistazo a los grupos de ejecución de subprocesos y planificadores de subprocesos. En esta lección en particular, Vamos a empezar echando un vistazo a los hilos propiamente dichos. Esto es típicamente donde comenzaría en una discusión sobre hilos. Así que lo primero que quiero mostrarte es mi máquina. que estoy corriendo. Tengo cuatro procesadores, así que esta es una máquina de cuatro núcleos. Podemos ver que tengo 236 procesos o aplicaciones o ID de procesos que se ejecutan en 2906 subprocesos. Así que hay muchos, muchos hilos en la máquina, muchos más hilos que procesos hay y ciertamente más subprocesos que procesadores hay. Y así estos hilos pasan por cambios de estado. Son ejecutables, están esperando, están bloqueando, están agotados, están durmiendo. Veremos, veremos cómo se desarrolla todo eso aquí en un minuto. En primer lugar, ¿qué es un hilo? Bueno, un hilo es un proceso ligero. que puede ser ejecutado independientemente por el sistema operativo. De hecho, puede haber muchos hilos todos corriendo simultáneamente. Es como una autopista de varios carriles frente a una carretera de un solo carril. Entonces podemos ejecutar múltiples subprocesos al mismo tiempo o en paralelo. Por lo tanto, hacer mucho más trabajo en la misma cantidad de tiempo. Así que lo primero que quiero mostrarte aquí es hemos creado una clase llamada subproceso de carga de archivos. Tan seguro que es un hilo, es decir, tiene un método de ejecución. Entonces, lo que este hilo va a hacer se determinará. por lo que está codificado en el método de ejecución. Porque la vida útil del hilo es el tiempo que se tarda en ejecutar el método de ejecución. Así que ahí está nuestro hilo. Va a simular la carga de un archivo. Entonces, la primera prueba dice que el enhebrado se hizo mal y vamos a ver lo que parece. Cuando ejecuto esto, debería salir y averiguar cuantos procesadores tengo que acabamos de ver tengo cuatro procesadores. Así que no estamos sobrecargando el hardware aquí, no estamos creando más hilos de lo que tenemos procesadores en este momento. Así que estoy llamando al método de ejecución en el hilo, cuatro de ellos en realidad aquí. Y puedo ver que todos estos hilos corrieron en el método principal con una prioridad de 5. Y eso le tomó 2.2098 segundos. Bueno, eso no me parece un hilo. Parece que estas cosas estaban apiladas en una sola fila. Y lo fueron. Fueron porque no llamas directamente al método de ejecución. Usted llama al método de inicio de hilo. Y el método de inicio activa la maquinaria. de modo que se creen y generen tareas en segundo plano. Así que hagámoslo correctamente y usemos el método de inicio en el hilo y veamos cómo es ese mismo escenario. Los procesadores disponibles siguen siendo cuatro, y entonces voy a ver las mismas cuatro cargas de archivos, las mismas cuatro subidas de archivos, pero ahora puedes ver que son 0.547 segundos. Y también puedo ver que no todos corrieron en el método principal. Este fue el hilo 1, el hilo 2, el hilo 3, el hilo 0. Básicamente, cada uno de ellos era hilos independientes, y ahora podemos ver que hicimos la misma cantidad de trabajo en una cuarta parte del tiempo. Así que el siguiente tipo al que vamos a echar un vistazo es cómo podemos nombrar hilos. Como por ejemplo, esto es un poco difícil para averiguar qué es qué, ¿verdad? Especialmente cuando estás mirando rastros de pila y volcados de subprocesos y ese tipo de cosas. Entonces, lo que quiero hacer es nuevamente el mismo escenario, pero quiero poner el nombre del hilo al conocimiento-ciudad-número y solo usará la "I" en el bucle de cuatro aquí. Así que deberíamos ver la ciudad del conocimiento número 1, número 2, número 3, número 4. Y nuevamente, estamos comenzando estos correctamente. Ahora, el sistema operativo arbitrariamente ejecutar estos hilos. Y eso es porque no hemos establecido una prioridad de hilo. Así que todos lo están ejecutando con prioridad 5. Así que cada uno tiene la misma prioridad. Así que no hay que decir necesariamente qué subproceso se ejecutará primero. Y como puede ver aquí, Knowledge-city-number 1 corrió primero, 0 corrió el último en realidad. Y si lo volvemos a ejecutar verás una variedad de variedades allí. Es impredecible, el orden en el que van a correr. A menos que hagas esto, por supuesto. Si establece la prioridad, si tienes un hilo en particular como digamos está imprimiendo facturas de clientes y el cliente está de pie en el mostrador, probablemente quieras el hilo que está imprimiendo tener una mayor prioridad, para dar una mayor prioridad de ejecución. Entonces, lo que estamos haciendo aquí es la misma idea. Vamos a ejecutar esta carga de archivos cuatro veces, excepto que tres de ellos tendrán una prioridad 9. Solo estoy haciendo un pequeño cambio aquí. Si "I" es 3, estableceremos la prioridad en 5. Si "I" como cualquier otra cosa que no sea 3, vamos a establecer la prioridad en 9. Entonces, lo que deberíamos ver es que la ciudad del conocimiento número 3 se ejecuta en último lugar. Porque los otros tres tenían una prioridad más alta. así que vamos a probar eso. Y lo hizo. Entonces podemos ver la ciudad del conocimiento número 2, número 1, número 0. Todos estaban corriendo en una prioridad 9 y triunfaron sobre esta ciudad-del-conocimiento-número 3, que se estaba ejecutando en la prioridad 5 por lo que se sirvió en último lugar. Gracias por ver.
Aprende sobre la marcha
Lleva tu aprendizaje a todas partes: la app de KnowledgeCity te permite ver las lecciones sobre la marcha.