20260303 Examen24feb_ejer2_2 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, el planificador se llama plan, pues venga, vamos a ejecutar uno, otro y otro, vamos a ejecutar tres.
00:00:01
Se supone que hemos ejecutado tres, vamos a mirar los que quedan pendientes y los que hay ahora en ejecución, a ver si este ejecutar se ha hecho bien.
00:00:20
Venga, pues vamos a volver a mirar los pendientes, vamos a volver a copiar, la verdad es que esto es tan feo que si luego lo vamos a subir para que quede bonito.
00:00:29
voy a agregar un método que sea
00:00:34
listar procesos pendientes y otro listar
00:00:37
procesos en ejecución y ya está
00:00:39
entonces voy a agregar
00:00:40
aquí un método que sea
00:00:43
listar
00:00:45
pendientes, no sé si
00:00:47
el ejercicio lo pedía
00:00:49
si, había uno listar ejecución
00:00:50
si, pero listar ejecución
00:00:53
ordenando, no, voy a
00:00:55
hacer uno listar ejecución tal cual, ese lo hacemos luego
00:00:57
voy a hacerme un
00:00:59
auxiliar listar pendientes
00:01:01
y este auxiliar, listar pendientes, es este código de aquí, este código, que corto y meto aquí, listar pendientes, listar pendientes, le tengo que pasar de este planificador, de este, claro, listar pendientes de este planificador, vale, este método mío auxiliar,
00:01:03
Me lista todos los procesos pendientes
00:01:33
Del planificador este que yo le pasé aquí
00:01:36
Y ahora vamos a hacer uno de lista en ejecución
00:01:38
Sin orden y sin nada
00:01:41
Para hacer comprobaciones
00:01:42
Qué aburrida estás, ¿verdad?
00:01:44
No
00:01:46
Es que me miras con una cara de aburrimiento
00:01:47
Pero forma parte de la vida, ¿eh? Aburrirse
00:01:49
Vale, vamos a lista en ejecución
00:01:52
Procesos
00:01:57
Ejecu
00:01:59
Oye
00:02:01
No, no, era que no te metieras con él
00:02:03
Claro, efectivamente
00:02:10
Perdona que soy hija de Madero
00:02:11
Hace el favor
00:02:13
¿Sí?
00:02:16
A todos, alguien, a ver
00:02:18
Tienes que ser hija de alguien
00:02:19
Siempre, ¿no?
00:02:22
Pues a mí me ha tocado eso
00:02:23
Procesos en ejecución
00:02:25
Plan punto ejecución
00:02:29
ejecución
00:02:32
vale, pues venga
00:02:35
ya tengo estos dos métodos que lo único que
00:02:37
hacen es listar los pendientes
00:02:39
y listar en ejecución
00:02:41
de este planificador, voy a llamarlo
00:02:42
aquí antes de la ejecución y
00:02:44
después voy a llamar a los
00:02:46
pendientes
00:02:48
pendientes
00:02:50
de este planificador
00:02:57
si no le pongo un static
00:02:59
pues voy mal
00:03:02
Vale
00:03:03
Vale
00:03:06
Y ahora después de haber ejecutado 3
00:03:11
Voy a volver a listar
00:03:13
Los pendientes que me han quedado
00:03:15
Y los que están en ejecución
00:03:16
También
00:03:20
A ver si hay 3 en ejecución y en pendientes
00:03:21
3 menos
00:03:24
Venga, vamos a por este main
00:03:25
Después de ejecutar 3
00:03:31
A ver
00:03:32
Vale, primero hemos añadido
00:03:34
Los 10, aquí están, ordenados
00:03:40
Que feo esto
00:03:42
Ah, es que debo tener
00:03:57
En ejecutar
00:04:02
Debo tener dentro de ejecutar
00:04:05
Debo tener algún
00:04:06
Ah, claro, es que en ejecutar tenía este for dentro
00:04:07
Perdón, entonces claro, me sale mil veces
00:04:10
Fuera
00:04:12
Vale, ahora
00:04:13
Siguiente intento
00:04:16
Venga, los 10 primeros añadidos
00:04:18
Muy bien, muy ordenaditos
00:04:21
Como tenía que ser
00:04:22
Por prioridad y duración
00:04:23
Vale, ahora he ejecutado tres, se supone que son estos, porque los va sacando por orden de prioridad, con lo cual, ¿cuáles me han quedado como pendientes? Los de abajo, todos menos estos, esos son los pendientes que me han quedado.
00:04:25
¿Y cuáles tengo como ejecución?
00:04:42
Pues tengo estos
00:04:44
El 8, el 3 y el 7
00:04:45
Y
00:04:48
Que bendita casualidad
00:04:50
Que el listado de procesos en ejecución
00:04:51
Está en orden de prioridad
00:04:54
También
00:04:56
¿Por qué?
00:04:56
¿Por qué me han salido
00:05:01
En ese orden tan bonito?
00:05:02
Claro, porque he hecho un
00:05:05
Treeset
00:05:06
Si yo lo cambio a esto y lo hago a
00:05:07
haset, pues me van a salir
00:05:10
de cualquier manera
00:05:14
vale
00:05:15
vamos a ver a ejecutarlo
00:05:17
ahora cambiándolos a un haset
00:05:19
yo no tengo que cambiar nada en mi aplicación
00:05:21
si es que da igual, funcionan igual
00:05:23
de puertas para afuera
00:05:24
ahora
00:05:27
procesos pendientes, aquí magníficos
00:05:29
ahora me han quedado
00:05:32
después de ejecutar
00:05:35
tres
00:05:37
Estos son los que me han quedado pendientes
00:05:38
Y
00:05:41
Estos son en ejecución
00:05:44
Que como veis, no me los ha mostrado por orden
00:05:46
Porque este
00:05:50
Ah bueno, o si
00:05:51
Están por orden
00:05:53
No
00:05:54
Yo creo que ha sido
00:05:57
De puñetera casualidad
00:05:59
Porque los pide
00:06:01
Pero ha sido de casualidad
00:06:02
En ejecución
00:06:04
Yo estoy mandando a ejecutar
00:06:07
Añadiendo a un hashet
00:06:08
Estoy añadiendo un headset
00:06:10
Y se van añadiendo de cualquier manera
00:06:12
¿Vale?
00:06:14
No, es que lo he cambiado
00:06:16
Ahora, para ver que ahora ya me saca de cualquier manera
00:06:17
Entonces
00:06:20
No, al headset tú vas añadiendo
00:06:21
Y van cayendo en el conjunto en cualquier lado
00:06:27
Y cuando twitteres
00:06:29
Van saliendo de cualquier manera
00:06:30
Imaginaos que voy a
00:06:32
Añadirlos todos
00:06:36
A ver si
00:06:38
Que no me respete el orden
00:06:40
Voy a añadir 9, he añadido 9 ahora
00:06:43
Venga, he añadido 9
00:06:45
En prioridad se me ha quedado solo 1
00:06:48
Y efectivamente
00:06:53
Estos en ejecución
00:06:55
Están mostrados de cualquier manera
00:06:57
¿Vale? No van por orden de prioridad
00:06:59
Van de cualquier manera
00:07:01
¿Vale? De hecho me ha mostrado el del 4
00:07:02
Antes que el 9, que no debería
00:07:05
¿Vale? Entendida, ¿no?
00:07:07
La diferencia en realidad crítica
00:07:08
Entre el HACET y el otro
00:07:11
Vale
00:07:13
Ay, jolines
00:07:16
¿Qué método nos falta ahora?
00:07:18
Ahora ya sí
00:07:26
Nos vamos al comparador
00:07:27
Listar ejecución
00:07:29
Lista de procesos que se están ejecutando ordenados
00:07:31
Entonces
00:07:34
Método listar ejecución
00:07:36
Ejecución, ejecutar ya lo tenemos aquí, vamos a listar ejecución, listar ejecución, este método tiene que listar todos los que están en ejecución ordenados por pip.
00:07:39
si nos dijeran
00:08:05
ordenados por su orden natural
00:08:07
lo único que habría que hacer
00:08:10
es lo que hemos hecho antes, cambiar esto
00:08:13
a triset
00:08:15
e iterar, ya está
00:08:16
está claro, ¿no?
00:08:19
si este enunciado habría sido
00:08:20
mostrar los procesos que están ejecutando
00:08:22
ordenados por su orden de prioridad
00:08:25
el del comparable
00:08:27
pues listar ejecución sería este mismo
00:08:28
que hemos hecho, este
00:08:31
iterar sin más
00:08:33
cambiando este a triset
00:08:34
Ya lo tendríamos
00:08:36
Ya lo tendríamos
00:08:37
Pero en este caso ya sabemos que
00:08:39
Si
00:08:44
Iteramos
00:08:45
Por el conjunto
00:08:47
De procesos en ejecución
00:08:50
El orden que me va a salir es el de comparable
00:08:51
Entonces, soluciones
00:08:54
Podemos hacer
00:08:56
Un montón de cosas, en realidad
00:08:58
Tenemos millones de maneras de abordar esto
00:08:59
A ver, una manera que se nos ocurre
00:09:01
Hombre, como el trip set tiene
00:09:06
La maravillosa ventaja
00:09:08
que me los mete ordenados
00:09:09
por el orden que yo le diga
00:09:12
pues los procesos en ejecución
00:09:14
que sea un triset
00:09:16
¿vale?
00:09:18
esto es lo más cómodo de hacer
00:09:23
oye, voy a meterlos en ejecución
00:09:24
ya que me pides un listado ordenado
00:09:26
maravilloso, triset
00:09:28
me va ordenando
00:09:30
pues un triset, magnífico
00:09:31
pero ojo, ya hemos visto
00:09:34
lo acabamos de ver
00:09:36
que si yo hago un triset
00:09:38
el orden con el que me los va a sacar
00:09:40
cuando itere es este.
00:09:42
¿Vale?
00:09:45
Pero yo quiero otro.
00:09:46
Pues entonces, vamos a hacer un triset
00:09:48
pero le vamos a decir, oye,
00:09:50
para ti, triset, cuando tú insertes,
00:09:52
inserta en este otro
00:09:55
orden que yo te doy.
00:09:56
No en el propio de los procesos, inserta en otro.
00:09:57
Entonces, si tú insertas en otro,
00:10:01
cuando yo recorra los procesos en ejecución,
00:10:02
te van a seguir con ese orden.
00:10:05
Esa sería la opción más sencilla.
00:10:07
¿Vale?
00:10:09
repito, como lo que yo tengo que
00:10:10
listar ordenado
00:10:12
es este set de aquí
00:10:13
pues me hago un triset y así
00:10:16
ya al iterar me sale ordenado
00:10:18
¿qué problema tengo aquí si me hago un triset sin nada?
00:10:20
que me va a salir ordenado
00:10:23
cuando itere, está claro, pero me va
00:10:24
a salir ordenado según este
00:10:26
comparable, y ese no lo
00:10:28
puedo cambiar, porque ese es el que usa
00:10:30
el agregar proceso para que estén todos
00:10:32
ordenados, no lo puedo cambiar
00:10:34
¿cómo soluciono este pequeñito
00:10:36
problema? Pues al triset
00:10:38
le digo, oye tú, no uses el
00:10:40
orden que tiene ese por defecto,
00:10:42
sino usa un criterio
00:10:45
que yo te doy aquí.
00:10:46
Y aquí es donde entra el comparator.
00:10:48
¿Vale? Aquí es donde entra.
00:10:51
¿Qué era el comparator?
00:10:53
El comparator era un criterio
00:10:54
de ordenación. No era
00:10:57
un rol, un papel que tiene
00:10:58
que jugar una entidad. Es un criterio
00:11:00
de ordenación. Pues en este
00:11:02
caso vamos a hacer un criterio de ordenación
00:11:05
para asignárselo a triset
00:11:07
y que ordene según ese criterio.
00:11:09
Vale, pues podría hacer yo aquí una clase
00:11:12
anónima de una serie de historias que no
00:11:13
hemos visto y nos hemos metido.
00:11:15
Vamos a hacerlo más fácil.
00:11:17
¿Qué es un criterio de ordenación?
00:11:19
Pues un criterio de ordenación es una clase
00:11:21
aparte, completamente aparte.
00:11:23
Eso es un criterio de ordenación.
00:11:25
Pues venga,
00:11:28
vamos a hacernos una clase.
00:11:29
Criterio de orden...
00:11:31
¿Qué?
00:11:32
A ver, pero en el contexto
00:11:37
que tú me estabas preguntando
00:11:44
que era para hacer métodos auxiliares
00:11:45
cosas
00:11:48
Si me lo preguntaste
00:11:48
en relación a esto
00:11:54
es que yo te veo
00:11:55
No, no, no, no, no pasa nada
00:11:56
y de hecho lo ideal sería hacerlo aquí
00:12:06
como una clase anónima
00:12:08
que no sabemos todavía lo que es
00:12:10
es que como este criterio de aquí
00:12:11
solo vale
00:12:13
para meterlo aquí dentro
00:12:14
solo vale para meterlo aquí dentro, es que
00:12:16
en realidad en Java no haría ni falta
00:12:19
hacer una clase para él, yo a la vez
00:12:21
que lo instancio, lo
00:12:23
declaro, y eso es hacer una clase anónima
00:12:25
pero bueno, eso lo dejamos ahí
00:12:27
flotando
00:12:28
si
00:12:29
si, tú lo harías como una clase
00:12:32
dentro del mismo fichero, supongo
00:12:35
no pasa nada, lo que pasa es que no podrían ser las dos
00:12:37
public, pero no pasa nada cuando sean las dos public
00:12:39
que en el mismo fichero
00:12:41
no puede haber dos clases
00:12:44
públicas, porque como el fichero
00:12:45
tiene que llamar como la clase pública
00:12:48
Yo lo que hice fue implementar
00:12:50
el proceso comparable y comparado
00:12:55
Ah, vale
00:12:57
que la propia clase
00:12:59
proceso además era criterio de
00:13:01
comparación, raro pero sí
00:13:03
A ver, raro
00:13:05
porque proceso se supone que
00:13:07
tiene su uso, que es yo soy un proceso
00:13:08
me describo patatín, no soy un
00:13:10
criterio, pero bueno, que también
00:13:13
puede funcionar como criterio si presenta comparator
00:13:14
también funciona como criterio, vale, es una solución
00:13:16
es una forma de sobrevivir muy digna
00:13:19
y muy elegante
00:13:21
vale, pues
00:13:22
venga, para que esto sea
00:13:25
un criterio
00:13:27
sea un criterio, tiene que
00:13:28
implementar
00:13:30
comparator
00:13:32
porque comparator es la interfaz
00:13:34
que tienen que implementar todos aquellos que quieran
00:13:38
ser criterio de
00:13:41
ordenación
00:13:42
vale, este criterio de ordenación
00:13:43
que va a ordenar entre sí
00:13:47
va a ordenar procesos
00:13:48
pues venga
00:13:50
si va a ordenar procesos
00:13:52
el comparator que sea de proceso
00:13:54
y ahora
00:13:57
si esto es un criterio de ordenación
00:13:59
que va a ordenar procesos
00:14:02
necesita implementar
00:14:04
el método de comparator
00:14:07
que es este
00:14:09
entonces este es un método
00:14:11
Que te compara este proceso
00:14:13
Con este otro
00:14:16
Este con este
00:14:17
Y te dice cual va antes
00:14:19
Pues aquí si queremos que vayan ordenados por pit
00:14:21
Pues esto sería
00:14:24
O uno punto get pit
00:14:26
Menos
00:14:28
O dos punto get pit
00:14:29
Vale, esto es un criterio de ordenación
00:14:34
Es un criterio
00:14:37
Que va por libre
00:14:38
Esto no es un papel
00:14:40
De ser comparable
00:14:43
que lo juega un proceso
00:14:44
que él es comparable con otro
00:14:47
y que por tanto
00:14:49
tienes que compare tú
00:14:50
esto es un criterio de prioridad
00:14:52
un criterio de ordenación entre procesos
00:14:54
¿ese criterio para qué me vale?
00:14:56
pues para entregárselo a gente
00:14:58
para que ordene según ese criterio
00:14:59
para entregárselo a gente
00:15:01
¿vale? pues ¿a qué gente se lo puede entregar?
00:15:02
pues por ejemplo al triset
00:15:06
por ejemplo al triset
00:15:07
se lo puede entregar y decir
00:15:09
oye tú
00:15:11
ordena
00:15:11
según este criterio
00:15:14
ala, ya está
00:15:18
ahora mi triset es un conjunto
00:15:22
que cuando yo le meta los procesos
00:15:24
los va a ordenar según este
00:15:26
criterio que yo lo estoy pasando
00:15:28
¿vale? ignorando por tanto
00:15:29
el papel de comparable
00:15:36
que tiene este, ignorando
00:15:38
lo va a ordenar según este
00:15:39
el triset
00:15:42
lo va a ordenar según ese
00:15:44
con lo cual ahora mi listar ejecución
00:15:45
este de aquí, este que yo he hecho aquí
00:15:49
Listar ejecución
00:15:51
Ya está, me los va a sacar por ese orden
00:15:53
Vamos a verlo
00:15:56
Entonces este que he dejado aquí vacío
00:16:01
Es que no tengo ni que hacerlo porque ya lo tenía hecho
00:16:02
Este ya lo tengo hecho, es el que he hecho antes
00:16:04
Vamos a ver
00:16:07
Estos son los procesos pendientes
00:16:11
Inicialmente
00:16:16
Ordenados por prioridad, muy bien
00:16:17
Ejecutado 9
00:16:20
Me ha quedado esto
00:16:23
Y ahora, los de ejecución
00:16:24
Efectivamente me salen
00:16:27
ordenados por pit
00:16:28
me salen ordenados por pit
00:16:30
los de ejecución
00:16:33
me salen ordenados por pit
00:16:34
porque los he ido metiendo
00:16:37
cada vez que los ejecutaba
00:16:38
cada vez que los ejecutaba
00:16:40
los he ido metiendo
00:16:43
a un triset
00:16:44
los he ido metiendo a un triset
00:16:45
cuyo criterio de ordenación
00:16:49
es ese
00:16:51
pues entonces si yo
00:16:52
ya me salen ordenados por ahí
00:16:54
Es que es otra idea distinta
00:16:56
Vale
00:17:10
A ver, tú puedes decir
00:17:12
Oye, este además de comparable
00:17:15
Que además simplemente
00:17:16
Comparator
00:17:18
Lo que hizo él para no hacer una clase aparte
00:17:20
Vale
00:17:23
Entonces
00:17:24
Entonces tendrías que implementar el compare aquí
00:17:26
Tendrías que implementar el compare
00:17:29
Y luego aquí le pasarías el, le pasarías el new planificador, te va a funcionar igual, lo que pasa es que tu diseño del proyecto, de la aplicación es muy fea y muy chunga, porque proceso es un proceso, proceso no es un criterio de comparación, es un proceso, ¿vale?
00:17:31
es un proceso
00:17:54
y tiene su uso
00:17:58
y no es un criterio de comparación
00:18:00
entonces proceso es un proceso
00:18:01
que puede ser comparable con otros
00:18:04
etcétera
00:18:06
pero no es un criterio de comparación
00:18:07
entonces estás como mezclando ideas
00:18:09
que lo hace todo como más complejo de entender
00:18:12
pero entiendes que en realidad
00:18:14
funcionaría igual porque
00:18:16
este proceso ahora aparte de ser un proceso
00:18:17
también es un criterio
00:18:20
de comparación por libre
00:18:22
vale
00:18:24
entonces bueno, podrías, pero es más
00:18:26
como más feo
00:18:28
entonces
00:18:29
entonces, mejor que quede
00:18:32
aparte, esto, su objetivo, ser
00:18:47
criterio de comparación, pues se queda aparte
00:18:49
claro, es cierto que
00:18:51
estamos haciendo una clase
00:18:53
solo para esto
00:18:54
que es muy poquito, entonces una clase
00:18:56
solo para esto, es muy poquito
00:18:59
pero por eso existe
00:19:01
el concepto de clase
00:19:03
anónima
00:19:05
que se llama
00:19:06
¿vale?
00:19:08
que eso está una buena oportunidad para mencionarlo
00:19:10
porque ahora
00:19:12
la ventaja de la IA es que vosotros
00:19:13
le preguntáis cosas y él los resuelve
00:19:16
cosas muy estupendamente
00:19:18
o pseudo estupendamente
00:19:20
pero claro, os va sacando muchas cosas
00:19:21
pues que no conocéis, que tenéis que averiguar
00:19:24
hay millones de cosas
00:19:26
entonces pues muchas cosas
00:19:28
las hará con clases anónimas
00:19:30
¿vale? ¿qué es una clase anónima en realidad?
00:19:31
¿en qué situación nos pide el cuerpo
00:19:34
con una clase anónima?
00:19:36
Pues cuando tienes que usar un objeto
00:19:38
¿vale? para pasárselo a otro
00:19:39
pero es que solo lo usas ahí
00:19:42
solo lo vas a usar ahí
00:19:44
ese objeto. Entonces solo lo usas
00:19:45
para hacer news de ese objeto, para hacer news
00:19:48
luego ese objeto nunca vuelves a acceder
00:19:50
para cambiarle propiedades ni para hacer
00:19:52
nada. Con ese objeto solo quieres
00:19:54
hacer un new para pasárselo a otro
00:19:56
y ya está, y de ese objeto
00:19:58
ya no vale para nada más. Luego ese objeto
00:20:00
no es como alumno, tú creas un alumno
00:20:02
alumno a new alumno
00:20:04
y luego con ese alumno a le pones la edad
00:20:05
le haces no se cuantos
00:20:07
pero en este ejemplo
00:20:09
este objeto comparador
00:20:11
solo lo queremos
00:20:14
solo lo queremos
00:20:16
para instanciarlo y pasárselo
00:20:17
a este
00:20:20
y nunca jamás vamos a
00:20:20
acceder a ese objeto para nada
00:20:23
ni hacer nada más con él ni nada
00:20:25
entonces estamos aquí
00:20:27
declarando una clase
00:20:29
que aparece ahí en la aplicación
00:20:30
que en estos proyectos
00:20:33
que tienen 10 clases no pasa nada
00:20:35
pero un proyecto normal que tiene
00:20:36
10.000, pues hombre
00:20:39
hacer una más, pues que
00:20:40
pereza, ¿no? Entonces ahí podría
00:20:43
entrar el concepto de clase anónima
00:20:45
que es
00:20:47
en el momento en el que yo
00:20:49
instancio un objeto, que en este
00:20:51
caso sería aquí
00:20:53
sería aquí
00:20:54
en el momento en el que yo lo instancio
00:20:58
en ese momento
00:21:01
voy además a declarar la clase
00:21:02
voy a declararla porque es cortita y pequeñita
00:21:04
voy a declararla aquí a la vez que la instancia
00:21:07
y no la pongo ni nombre
00:21:09
me limito a declararla
00:21:11
es decir, meto aquí
00:21:13
este código
00:21:14
que es un código pequeñito
00:21:16
meto ahí ese código
00:21:19
y ya está, con lo cual
00:21:21
no necesito una clase aparte
00:21:22
lo meto ahí ese código
00:21:25
y no le doy ni nombre
00:21:26
por eso se llama anónimo
00:21:28
¿Vale? Entonces
00:21:31
Estos países se me hacen más grandes
00:21:33
Quedaría una cosa
00:21:35
Como esta
00:21:37
Quedaría una cosa como esta
00:21:39
New
00:21:50
Comparator
00:21:54
De proceso
00:21:59
Y aquí
00:22:01
Me haría
00:22:04
Yo proceso
00:22:10
Y aquí me hago
00:22:14
el método este
00:22:17
vale
00:22:19
y aquí
00:22:28
triset new comparator
00:22:30
proceso
00:22:35
aquí
00:22:36
me faltará un punticom algo en algún sitio
00:22:38
donde me sale el
00:22:41
el rojo este
00:22:43
tokens
00:22:45
comparator procesos
00:22:46
o será esto que me falta, ah, estos paréntesis me faltaban
00:22:49
vale
00:22:51
esto es una clase anónima
00:22:52
no asusta, no tiene que asustaros
00:22:54
no pasa nada
00:22:57
entonces, fijaos
00:22:57
yo tengo que pasarle a triset
00:23:01
algo que implemente esto
00:23:03
puedo hacerme
00:23:05
una clase que implementa eso
00:23:07
hacer su código
00:23:09
y luego aquí instanciarlo
00:23:11
vale
00:23:13
pero hombre, ya es otra clase aparte
00:23:14
si total
00:23:18
solo la uso
00:23:19
es muy pequeñita
00:23:21
solo la uso aquí, no es una entidad de mi aplicación
00:23:23
no es una entidad de mi aplicación
00:23:26
que entre mi jerarquía de clases
00:23:28
ni nada, solo la uso
00:23:30
aquí, para instanciarla y pasárselo
00:23:32
ya está, pues en el momento de
00:23:34
instanciarla, en el momento de instanciarla voy a declararla
00:23:36
vale, en el momento de instanciarla
00:23:38
la declaro, entonces yo pongo
00:23:40
oye tú, que voy a instanciar, vale
00:23:42
¿qué vas a instanciar? vas a instanciar
00:23:43
una instancia que implementa esto
00:23:46
que implementa
00:23:48
esto, no le das ni nombre
00:23:50
no le das ni nombre
00:23:52
y aquí entre llaves
00:23:53
pones el código de esa clase
00:23:55
ya está, pones el código
00:23:58
bueno, pues si lo hacemos así, nos ahorramos
00:23:59
la otra clase
00:24:04
entonces las clases anónimas se usan un montón
00:24:04
en realidad, cuando tienes que pasar
00:24:09
una instancia de un objeto a alguien
00:24:11
ese objeto
00:24:13
pertenece a una clase cortita
00:24:15
pequeñita
00:24:17
pues la declaras en el momento de pasársela
00:24:19
y no tienes que tener esa clase aparte todo el rato
00:24:22
eso sí, si lo estás haciendo
00:24:24
todo el rato, pues repetir
00:24:26
esto mil veces, es un poco
00:24:28
tonto repetirlo mil veces
00:24:30
pues entonces ya te la haces aparte y ya está
00:24:31
pero aquí, que solo
00:24:34
la vamos a usar aquí, pues la declaro aquí
00:24:36
a la vez que la instancia y se acabó
00:24:38
¿vale? bueno, pues
00:24:43
¿en dónde?
00:24:44
sí, efectivamente
00:24:54
claro, sí, cada vez
00:24:56
que tú tienes que pasar una instancia
00:24:58
de algo a alguien
00:25:00
una instancia de un objeto, pues
00:25:01
lo puedes pasar como new
00:25:04
eso que he implementado y declaro en ese
00:25:05
momento, ¿vale? Siempre
00:25:07
lo que pasa es que si la clase es muy larga
00:25:09
no lo haces, porque entonces te queda
00:25:11
entre paréntesis una declaración
00:25:13
muy larga, porque si la clase tiene muchas cosas
00:25:15
no lo haces, ¿vale? Pero para cosas como
00:25:17
esta, sí que lo haces
00:25:19
esto sería con
00:25:21
clase
00:25:28
anónima
00:25:29
bueno, para que
00:25:32
ya no os asuste cuando lo veáis, ¿vale?
00:25:34
Que lo veréis mucho si le pedís cosas a las IAS.
00:25:37
Vale.
00:25:42
Y prácticamente
00:25:44
se ha acabado el ejercicio, ¿no? Ah, bueno, nos falta
00:25:45
este.
00:25:47
Bueno, este otro. Si no lo habéis hecho
00:25:48
con un triset dándole
00:25:50
criterio de ordenación,
00:25:53
pues se puede hacer de muchas maneras.
00:25:55
También se puede hacer, pues
00:25:57
eso, paso
00:25:58
mi conjunto, yo no puedo
00:26:00
ordenar un conjunto, no puedo hacer de ese conjunto
00:26:02
hacer un sort, no puedo
00:26:05
porque los conjuntos no pueden ordenarse
00:26:07
pero puedo hacerme
00:26:09
una lista, una lista
00:26:11
nueva limpia, añadir
00:26:13
con add all todos los
00:26:15
de ese conjunto, añadirlo y ordenar
00:26:17
esa lista con ese criterio y ya está
00:26:19
esa sería otra forma sencilla
00:26:20
de hacer ese método
00:26:23
de hacer el método de volver lista
00:26:24
ordenada, añadirlos
00:26:27
todos a una lista nueva, todos
00:26:29
los del conjunto de ejecución
00:26:31
y ahora ya esa lista llamarla
00:26:32
ordenarla con sort, con el criterio
00:26:35
nuevo. Y
00:26:37
si no habéis hecho un triset, pues esa sería
00:26:40
la manera. Y ahora ya el último que nos
00:26:42
queda. El abortar proceso
00:26:47
este de aquí. Y aquí me falta
00:26:49
esto.
00:26:57
Y me sobra esto.
00:27:00
No, algo me falta aquí.
00:27:03
Este de donde está cerrando.
00:27:05
New triset.
00:27:09
Como que no está
00:27:10
Ah vale, me falta
00:27:17
No, no, no
00:27:18
La clase anónima esta
00:27:25
Que hay aquí algo que
00:27:27
No estoy haciendo bien
00:27:28
Este, no, no es este
00:27:30
Es este de aquí
00:27:38
No sé que me falta aquí
00:27:40
Ah, me faltaba importar el comparator este. Vale, vale, me faltaba importar... Vale, ya está. Vale, estaba bien. Bueno, pues el otro método que nos faltaba, el de abortar proceso. Aquí. Voy... Eliminar por PID.
00:27:46
Vale, pues este es
00:28:20
Eliminar
00:28:29
De
00:28:33
De la lista de ejecución
00:28:33
De procesos, es decir
00:28:39
Esto idealmente sería
00:28:40
Ejecución
00:28:42
Remove
00:28:44
Vale, aquí
00:28:49
Cuidado
00:29:01
Para eliminar por
00:29:04
PID
00:29:06
A ver, ¿qué os ocurre?
00:29:06
Como vamos a acabar ahora
00:29:11
Luego ya que haga las preguntas que sean
00:29:16
¿Vale? Pero vamos a intentar acabar
00:29:18
Porque esto que viene aquí también es importante
00:29:19
Si tú haz como que haces caso
00:29:22
Vale, a ver, cuidado
00:29:25
Aquí esto es eliminar por pit
00:29:28
Entonces aquí nos llama, nos pide un remove
00:29:30
Cuidado, depende de si yo he hecho
00:29:32
Triset o haset
00:29:35
Si este fuera
00:29:36
Un haset
00:29:39
Ningún problema
00:29:40
Porque yo tengo un hash set de equal
00:29:43
Por
00:29:45
Pit
00:29:47
¿Vale?
00:29:48
Luego si la estructura fuera un hash set
00:29:50
¿Dónde está el?
00:29:53
Aquí
00:29:55
Si ejecución
00:29:55
Si ejecución
00:30:00
Fuera hash set
00:30:02
Esto me vale
00:30:05
Me hago un proceso con ese pit
00:30:07
Y listo
00:30:09
Y lo mando a borrar
00:30:10
Proceso
00:30:12
p.setPid
00:30:18
newProceso
00:30:21
con cualquier valor
00:30:29
me da lo mismo, vale
00:30:31
vale, es decir
00:30:33
si los métodos en ejecución
00:30:35
estuvieran en un hashSet
00:30:37
esto es suficiente
00:30:38
porque remove me va a borrar
00:30:41
uno igual a este
00:30:43
e igual a ese significa
00:30:46
igual en pid, porque el hashSet
00:30:47
mira el hasco de equals que está hecho por pid
00:30:49
vale, ningún problema
00:30:51
si yo quiero borrar un proceso con ese pit
00:30:53
y lo he hecho con un haset
00:30:56
y he puesto el hasco de equals por pit
00:30:58
ya estaría
00:31:01
pero si yo lo he hecho con triset
00:31:02
para hacer esto de la ordenación
00:31:05
pasarle un criterio de ordenación
00:31:08
y que me lo saque yo ordenado
00:31:10
o lo he hecho un triset porque me ha dado la gana
00:31:11
lo que sea
00:31:13
si los procesos en ejecución
00:31:13
ejecución
00:31:22
fuera
00:31:27
Triset
00:31:31
Lo de arriba
00:31:34
No vale
00:31:36
¿Verdad que lo de arriba no vale?
00:31:38
¿Por qué? Porque si yo he hecho un triset
00:31:48
Ah bueno
00:31:49
Vale si le he dado, depende
00:31:51
Vale
00:31:53
En función del criterio que yo le haya puesto
00:31:54
De comparación
00:31:57
Como le he puesto por pi
00:31:58
Para el triset
00:32:01
La igualdad es por pi
00:32:03
Luego valdría también
00:32:04
¿Vale?
00:32:06
Valdría también
00:32:08
Si el criterio que usara el triset
00:32:09
Si el criterio que usara el triset
00:32:12
Fuera este
00:32:14
Fuera este, el de
00:32:15
Prioridad y duración, no valdría
00:32:20
Luego esto que he puesto aquí
00:32:22
A ver
00:32:23
¿Dónde está aquí?
00:32:25
Aquí, esto de aquí
00:32:29
Fuera triset
00:32:33
Funcionaría
00:32:34
Solo si el criterio
00:32:37
De ordenación del triset fuera por pit
00:32:42
Si no, no. Luego, si el criterio de ordenación del triset de ejecución, si el criterio fuera pit, lo de arriba también funciona. Lo de arriba también funciona porque el triset mira la igualdad por el criterio de ordenación.
00:32:44
que yo he hecho un triset con un criterio de ordenación
00:33:09
no por pip
00:33:15
es decir, si yo he hecho un triset sin esto
00:33:16
con lo cual el criterio de ordenación
00:33:21
es este de aquí, el del comparable
00:33:24
que es esto otro
00:33:27
no puedo borrar así
00:33:29
no puedo borrar de esta manera
00:33:30
Entonces
00:33:36
Si no es el caso
00:33:40
Pues como borro
00:33:42
Pues borro con el iterador y ya está
00:33:43
Siempre podré borrar así
00:33:46
Me hago un iterator
00:33:49
De proceso
00:33:51
Ejecución
00:33:52
Punto
00:34:01
Iterator
00:34:02
Vale, y ahora ya sí
00:34:07
Mientras haya un siguiente sobre el que
00:34:10
Iterar
00:34:17
Si ese en el que estoy posicionada
00:34:18
su pit
00:34:23
es igual
00:34:25
que el que me han dicho
00:34:27
este
00:34:29
es igual que el que me han dicho
00:34:31
pues lo puedo borrar
00:34:33
a través del iterador sin problema
00:34:34
y ya está
00:34:37
esto me va a funcionar siempre
00:34:39
para borrar por pit
00:34:41
al margen de si tengo un haset
00:34:43
un triset, un list, da igual
00:34:45
me va a funcionar siempre
00:34:47
bueno y con esto habría terminado el ejercicio
00:34:48
a ver hemos
00:35:03
sacado muchas pequeñas cosas,
00:35:06
pero una versión básica se podría hacer
00:35:08
con muy poca cosa.
00:35:10
A pesar que hemos aprovechado, pues bueno,
00:35:16
para comentar muchas cosas en paralelo
00:35:19
y todo eso. Pero
00:35:20
hasta aquí
00:35:22
todo esto tiene que estar muy suelto y muy fluido.
00:35:24
¿Vale?
00:35:28
Tiene que estar suelto y fluido.
00:35:29
Para que podamos seguir
00:35:31
incorporando
00:35:34
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 1
- Fecha:
- 3 de marzo de 2026 - 17:16
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 35′ 39″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 157.21 MBytes