[{"data":1,"prerenderedAt":1684},["ShallowReactive",2],{"navigation_docs":3,"-ejemplos-ejemplo-10":298,"-ejemplos-ejemplo-10-surround":1679},[4,18,70,105,149,178,212,257],{"title":5,"path":6,"stem":7,"children":8,"icon":17},"Evaluación","\u002Fintroduction","1.introduction\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"icon":11},"Método de Evaluación","i-iconamoon-cheque-bold",{"title":13,"path":14,"stem":15,"icon":16},"Plataforma de Aprendizaje","\u002Fintroduction\u002Fplataforma","1.introduction\u002F2.plataforma","i-lucide-book-marked","i-lucide-house",{"title":19,"path":20,"stem":21,"children":22,"icon":25},"Interfaz Gráfica de Usuario","\u002Fgui","2.gui\u002F01.index",[23,26,30,34,38,42,46,50,54,58,62,66],{"title":24,"path":20,"stem":21,"icon":25},"¿Qué es una Interfaz Gráfica de Usuario (GUI)?","i-carbon-gui-management",{"title":27,"path":28,"stem":29,"icon":25},"Creación de Interfaces Gráficas de Usuario (GUI)","\u002Fgui\u002Fbuild-gui","2.gui\u002F02.build-gui",{"title":31,"path":32,"stem":33,"icon":25},"Componentes Básicos de Swing","\u002Fgui\u002Fcomponentes-basicos","2.gui\u002F03.componentes-basicos",{"title":35,"path":36,"stem":37},"El componente JFrame","\u002Fgui\u002Fjframe","2.gui\u002F04.jframe",{"title":39,"path":40,"stem":41},"El componente JPanel","\u002Fgui\u002Fjpanel","2.gui\u002F05.jpanel",{"title":43,"path":44,"stem":45},"El componente JButton","\u002Fgui\u002Fjbutton","2.gui\u002F06.jbutton",{"title":47,"path":48,"stem":49,"icon":25},"Elementos de texto en interfaces gráficas con Swing","\u002Fgui\u002Ftext","2.gui\u002F07.text",{"title":51,"path":52,"stem":53},"Elementos Visuales","\u002Fgui\u002Felementos-visuales","2.gui\u002F08.elementos-visuales",{"title":55,"path":56,"stem":57,"icon":25},"Eventos en Swing","\u002Fgui\u002Feventos","2.gui\u002F09.eventos",{"title":59,"path":60,"stem":61,"icon":25},"Controles en Swing","\u002Fgui\u002Fcontroles","2.gui\u002F10.controles",{"title":63,"path":64,"stem":65,"icon":25},"Atributos Comunes de los Componentes de Diseño","\u002Fgui\u002Fatributos-comunes","2.gui\u002F11.atributos-comunes",{"title":67,"path":68,"stem":69,"icon":25},"Layouts","\u002Fgui\u002Flayout","2.gui\u002F12.layout",{"title":71,"icon":25,"path":72,"stem":73,"children":74,"page":104},"Personalización","\u002Fpersonalizacion","3.personalizacion",[75,79,84,88,92,96,100],{"title":76,"path":77,"stem":78},"Jerarquía de clases en Swing","\u002Fpersonalizacion\u002Fjerarquia","3.personalizacion\u002F01.jerarquia",{"title":80,"path":81,"stem":82,"icon":83},"Personalización Inicial de Componentes Swing","\u002Fpersonalizacion\u002Fpersonalizacion-inicial","3.personalizacion\u002F02.personalizacion-inicial","i-carbon-palette",{"title":85,"path":86,"stem":87,"icon":83},"Tema y Personalización Avanzada en Swing","\u002Fpersonalizacion\u002Ftheme","3.personalizacion\u002F03.theme",{"title":89,"path":90,"stem":91,"icon":83},"Pintando en Swing","\u002Fpersonalizacion\u002Fpaint","3.personalizacion\u002F04.paint",{"title":93,"path":94,"stem":95,"icon":83},"Mi Tema 1: Comenzando con la Personalización","\u002Fpersonalizacion\u002Ftheme-start","3.personalizacion\u002F05.theme-start",{"title":97,"path":98,"stem":99,"icon":83},"UI Delegates: Personalizando la Apariencia de los Componentes","\u002Fpersonalizacion\u002Fui-delegates","3.personalizacion\u002F06.ui-delegates",{"title":101,"path":102,"stem":103,"icon":83},"Empleado delegadores de UI para personalizar la apariencia de los componentes","\u002Fpersonalizacion\u002Ftheme-02","3.personalizacion\u002F07.theme-02",false,{"title":106,"path":107,"stem":108,"children":109,"icon":148},"Programación concurrente","\u002Fconcurrencia","4.concurrencia\u002F01.index",[110,112,116,120,124,128,132,136,140,144],{"title":111,"path":107,"stem":108,"icon":83},"¿Qué es la concurrencia?",{"title":113,"path":114,"stem":115,"icon":83},"Unidades de Ejecución","\u002Fconcurrencia\u002Funidades-ejecucion","4.concurrencia\u002F02.unidades-ejecucion",{"title":117,"path":118,"stem":119,"icon":83},"Programa de flujo único y de flujo múltiple","\u002Fconcurrencia\u002Fflujos","4.concurrencia\u002F03.flujos",{"title":121,"path":122,"stem":123,"icon":83},"Hilos con Thread y Runnable","\u002Fconcurrencia\u002Fthread-runnable","4.concurrencia\u002F04.thread-runnable",{"title":125,"path":126,"stem":127},"Paralelismo V.S. Concurrencia","\u002Fconcurrencia\u002Fparalelismo","4.concurrencia\u002F05.paralelismo",{"title":129,"path":130,"stem":131,"icon":83},"Problemas clásicos de concurrencia","\u002Fconcurrencia\u002Fproblemas","4.concurrencia\u002F06.problemas",{"title":133,"path":134,"stem":135,"icon":83},"Emulando condiciones de carrera en Java","\u002Fconcurrencia\u002Fcondiciones-carrera","4.concurrencia\u002F07.condiciones-carrera",{"title":137,"path":138,"stem":139,"icon":83},"Semáforos en Java","\u002Fconcurrencia\u002Fsemaforos","4.concurrencia\u002F08.semaforos",{"title":141,"path":142,"stem":143,"icon":83},"La clase Timer en Java Swing","\u002Fconcurrencia\u002Ftimer","4.concurrencia\u002F09.timer",{"title":145,"path":146,"stem":147,"icon":83},"Algoritmos de ordenamiento de procesos","\u002Fconcurrencia\u002Falgoritmos-procesos","4.concurrencia\u002F10.algoritmos-procesos","i-carbon-parallel-groups",{"title":150,"path":151,"stem":152,"children":153,"icon":177},"Acceso a datos","\u002Fdatos","5.datos\u002F01.index",[154,157,161,165,169,173],{"title":155,"path":151,"stem":152,"icon":156},"Java y las bases de datos","i-carbon-database",{"title":158,"path":159,"stem":160},"Cliente Servidor","\u002Fdatos\u002Fcliente-servidor","5.datos\u002F02.cliente-servidor",{"title":162,"path":163,"stem":164},"CRUD","\u002Fdatos\u002Fcrud","5.datos\u002F03.crud",{"title":166,"path":167,"stem":168},"Sentencias Preparadas con JDBC","\u002Fdatos\u002Fsentencia-preparada","5.datos\u002F04.sentencia-preparada",{"title":170,"path":171,"stem":172},"DAO (Data Access Object)","\u002Fdatos\u002Fdao","5.datos\u002F05.dao",{"title":174,"path":175,"stem":176},"Usando Hibernate ORM","\u002Fdatos\u002Form","5.datos\u002F06.orm","i-gravity-ui-database-fill",{"title":179,"path":180,"stem":181,"children":182,"icon":211},"Programación móvil","\u002Fmovil","6.movil\u002F01.index",[183,186,191,195,199,203,207],{"title":184,"path":180,"stem":181,"icon":185},"¿Qué es Android y Kotlin?","i-carbon-mobile",{"title":187,"path":188,"stem":189,"icon":190},"¿Qué es Android Studio?","\u002Fmovil\u002Fandroid-studio","6.movil\u002F02.android-studio","i-carbon-application",{"title":192,"path":193,"stem":194,"icon":190},"¿Qué es Jetpack Compose?","\u002Fmovil\u002Fjetpack-compose","6.movil\u002F03.jetpack-compose",{"title":196,"path":197,"stem":198},"Filas y Columnas con Jetpack Compose","\u002Fmovil\u002Ffilas-columnas","6.movil\u002F04.filas-columnas",{"title":200,"path":201,"stem":202,"icon":190},"Componentes Básicos en Jetpack Compose","\u002Fmovil\u002Fcomponentes-basicos","6.movil\u002F05.componentes-basicos",{"title":204,"path":205,"stem":206,"icon":190},"Las Intenciones en Android con Jetpack Compose","\u002Fmovil\u002Fintentions","6.movil\u002F06.intentions",{"title":208,"path":209,"stem":210,"icon":190},"Navegación en Android con Jetpack Compose","\u002Fmovil\u002Fnavegacion","6.movil\u002F07.navegacion","phone_android",{"title":213,"icon":25,"path":214,"stem":215,"children":216,"page":104},"Ejemplos","\u002Fejemplos","7.ejemplos",[217,221,225,229,233,237,241,245,249,253],{"title":218,"path":219,"stem":220},"Ejemplo 01: Creando un validador abstracto de expresiones","\u002Fejemplos\u002Fejemplo-01","7.ejemplos\u002F01.ejemplo-01",{"title":222,"path":223,"stem":224},"Ejemplo 02: Diferencias de validar un JTextField y un JFormattedTextField","\u002Fejemplos\u002Fejemplo-02","7.ejemplos\u002F02.ejemplo-02",{"title":226,"path":227,"stem":228},"Ejemplo 03: Creando una Aplicación con GUI en Java Swing","\u002Fejemplos\u002Fejemplo-03","7.ejemplos\u002F03.ejemplo-03",{"title":230,"path":231,"stem":232},"Ejemplo 4: Estilizando componentes Swing con Delegadores","\u002Fejemplos\u002Fejemplo-04","7.ejemplos\u002F04.ejemplo-04",{"title":234,"path":235,"stem":236,"icon":83},"Ejemplo 5: Uso de Hilos con Thread y Runnable","\u002Fejemplos\u002Fejemplo-05","7.ejemplos\u002F05.ejemplo-05",{"title":238,"path":239,"stem":240,"icon":83},"Ejemplo 06: Manejando Hilos de formas Diferentes en Java","\u002Fejemplos\u002Fejemplo-06","7.ejemplos\u002F06.ejemplo-06",{"title":242,"path":243,"stem":244,"icon":83},"Ejemplo 7: Condiciones de carrera en Java","\u002Fejemplos\u002Fejemplo-07","7.ejemplos\u002F07.ejemplo-07",{"title":246,"path":247,"stem":248,"icon":83},"Ejemplo 8: Control de acceso a recursos compartidos con semáforos","\u002Fejemplos\u002Fejemplo-08","7.ejemplos\u002F08.ejemplo-08",{"title":250,"path":251,"stem":252,"icon":83},"Ejemplo 9: El restaurante y los pedidos","\u002Fejemplos\u002Fejemplo-09","7.ejemplos\u002F09.ejemplo-09",{"title":254,"path":255,"stem":256},"Ejemplo 10: Proceso FIFO (First In, First Out) con Semáforos y Swing","\u002Fejemplos\u002Fejemplo-10","7.ejemplos\u002F10.ejemplo-10",{"title":258,"icon":25,"path":259,"stem":260,"children":261,"page":104},"Actividades","\u002Factividades","8.actividades",[262,266,270,274,278,282,286,290,294],{"title":263,"path":264,"stem":265,"icon":25},"Actividad 1: Introducción al diseño de interfaces","\u002Factividades\u002Fact-01","8.actividades\u002F01.act-01",{"title":267,"path":268,"stem":269,"icon":25},"Actividad 2: Diseño de wireframes y prototipos","\u002Factividades\u002Fact-02","8.actividades\u002F02.act-02",{"title":271,"path":272,"stem":273,"icon":25},"Actividad 3: Propuesta de Proyecto y Wireframe inicial","\u002Factividades\u002Fact-03","8.actividades\u002F03.act-03",{"title":275,"path":276,"stem":277,"icon":83},"Actividad 4: Temas y Componentes Personalizados en Swing","\u002Factividades\u002Fact-04","8.actividades\u002F04.act-04",{"title":279,"path":280,"stem":281,"icon":83},"Actividad 5: Explicando la Concurrencia a un Niño de 5 Años","\u002Factividades\u002Fact-05","8.actividades\u002F05.act-05",{"title":283,"path":284,"stem":285,"icon":83},"Actividad 6: Simulación de una cocina con múltiples chefs (hilos)","\u002Factividades\u002Fact-06","8.actividades\u002F06.act-06",{"title":287,"path":288,"stem":289,"icon":83},"Actividad 7: Sistema de retiro bancario","\u002Factividades\u002Fact-07","8.actividades\u002F07.act-07",{"title":291,"path":292,"stem":293,"icon":83},"Actividad 8: Simulación de Round Robin con hilos e Interfaz Gráfica","\u002Factividades\u002Fact-08","8.actividades\u002F08.act-08",{"title":295,"path":296,"stem":297,"icon":83},"Actividad 9: CRUD con Hibernate y Swing","\u002Factividades\u002Fact-09","8.actividades\u002F09.act-09",{"id":299,"title":254,"body":300,"description":1672,"extension":1673,"links":1674,"meta":1675,"navigation":372,"path":255,"seo":1677,"stem":256,"__hash__":1678},"docs\u002F7.ejemplos\u002F10.ejemplo-10.md",{"type":301,"value":302,"toc":1663},"minimark",[303,308,312,316,332,336,339,344,617,621,953,957,1659],[304,305,307],"h2",{"id":306},"descripción","Descripción",[309,310,311],"p",{},"En este ejemplo, implementaremos un proceso FIFO (First In, First Out) utilizando semáforos para controlar el acceso a un recurso compartido. La interfaz gráfica se desarrollará utilizando Swing, donde los usuarios podrán agregar elementos a una cola y procesarlos en orden de llegada. Al mismo tiempos se dibujará el estado de la cola en la interfaz gráfica para visualizar el proceso FIFO.",[304,313,315],{"id":314},"requisitos","Requisitos",[317,318,319,323,326,329],"ul",{},[320,321,322],"li",{},"Cada Proceso deberá tener un identificador único, un tiempo de procesamiento, así como un color para su representación gráfica.",[320,324,325],{},"La interfaz gráfica debe permitir a los usuarios agregar procesos a la cola y visualizar el estado de la cola en tiempo real.",[320,327,328],{},"Se debe implementar un mecanismo de semáforos para controlar el acceso a la cola compartida, asegurando que los procesos se procesen en orden de llegada.",[320,330,331],{},"El sistema debe permitir procesar los elementos de la cola, mostrando el proceso actual en ejecución y los procesos restantes en la cola.",[304,333,335],{"id":334},"implementación","Implementación",[309,337,338],{},"A continuación se muestra un ejemplo de cómo se podría implementar este proceso FIFO utilizando Java, Swing y semáforos:",[340,341,343],"h3",{"id":342},"record-proceso","Record Proceso",[345,346,351],"pre",{"className":347,"code":348,"language":349,"meta":350,"style":350},"language-java shiki shiki-themes github-dark","package app.fifo;\n\nimport java.awt.*;\nimport java.util.concurrent.Semaphore;\n\npublic class Process {\n    private final int id;\n    private final int arrivalTime;\n    private final int processingTime;\n    private final Color color;\n    private Semaphore semaphore;\n\n    public Process(int id, int arrivalTime, int processingTime, Color color,  Semaphore semaphore) {\n        this.id = id;\n        this.arrivalTime = arrivalTime;\n        this.processingTime = processingTime;\n        this.color = color;\n        this.semaphore = semaphore;\n    }\n\n    \u002F\u002F Getters\n}\n","java","",[352,353,354,367,374,390,398,403,419,434,446,458,468,476,481,529,543,555,567,580,593,599,604,611],"code",{"__ignoreMap":350},[355,356,359,363],"span",{"class":357,"line":358},"line",1,[355,360,362],{"class":361},"snl16","package",[355,364,366],{"class":365},"s95oV"," app.fifo;\n",[355,368,370],{"class":357,"line":369},2,[355,371,373],{"emptyLinePlaceholder":372},true,"\n",[355,375,377,380,383,387],{"class":357,"line":376},3,[355,378,379],{"class":361},"import",[355,381,382],{"class":365}," java.awt.",[355,384,386],{"class":385},"sDLfK","*",[355,388,389],{"class":365},";\n",[355,391,393,395],{"class":357,"line":392},4,[355,394,379],{"class":361},[355,396,397],{"class":365}," java.util.concurrent.Semaphore;\n",[355,399,401],{"class":357,"line":400},5,[355,402,373],{"emptyLinePlaceholder":372},[355,404,406,409,412,416],{"class":357,"line":405},6,[355,407,408],{"class":361},"public",[355,410,411],{"class":361}," class",[355,413,415],{"class":414},"svObZ"," Process",[355,417,418],{"class":365}," {\n",[355,420,422,425,428,431],{"class":357,"line":421},7,[355,423,424],{"class":361},"    private",[355,426,427],{"class":361}," final",[355,429,430],{"class":361}," int",[355,432,433],{"class":365}," id;\n",[355,435,437,439,441,443],{"class":357,"line":436},8,[355,438,424],{"class":361},[355,440,427],{"class":361},[355,442,430],{"class":361},[355,444,445],{"class":365}," arrivalTime;\n",[355,447,449,451,453,455],{"class":357,"line":448},9,[355,450,424],{"class":361},[355,452,427],{"class":361},[355,454,430],{"class":361},[355,456,457],{"class":365}," processingTime;\n",[355,459,461,463,465],{"class":357,"line":460},10,[355,462,424],{"class":361},[355,464,427],{"class":361},[355,466,467],{"class":365}," Color color;\n",[355,469,471,473],{"class":357,"line":470},11,[355,472,424],{"class":361},[355,474,475],{"class":365}," Semaphore semaphore;\n",[355,477,479],{"class":357,"line":478},12,[355,480,373],{"emptyLinePlaceholder":372},[355,482,484,487,489,492,495,499,502,504,507,509,511,514,517,520,523,526],{"class":357,"line":483},13,[355,485,486],{"class":361},"    public",[355,488,415],{"class":414},[355,490,491],{"class":365},"(",[355,493,494],{"class":361},"int",[355,496,498],{"class":497},"s9osk"," id",[355,500,501],{"class":365},", ",[355,503,494],{"class":361},[355,505,506],{"class":497}," arrivalTime",[355,508,501],{"class":365},[355,510,494],{"class":361},[355,512,513],{"class":497}," processingTime",[355,515,516],{"class":365},", Color ",[355,518,519],{"class":497},"color",[355,521,522],{"class":365},",  Semaphore ",[355,524,525],{"class":497},"semaphore",[355,527,528],{"class":365},") {\n",[355,530,532,535,538,541],{"class":357,"line":531},14,[355,533,534],{"class":385},"        this",[355,536,537],{"class":365},".id ",[355,539,540],{"class":361},"=",[355,542,433],{"class":365},[355,544,546,548,551,553],{"class":357,"line":545},15,[355,547,534],{"class":385},[355,549,550],{"class":365},".arrivalTime ",[355,552,540],{"class":361},[355,554,445],{"class":365},[355,556,558,560,563,565],{"class":357,"line":557},16,[355,559,534],{"class":385},[355,561,562],{"class":365},".processingTime ",[355,564,540],{"class":361},[355,566,457],{"class":365},[355,568,570,572,575,577],{"class":357,"line":569},17,[355,571,534],{"class":385},[355,573,574],{"class":365},".color ",[355,576,540],{"class":361},[355,578,579],{"class":365}," color;\n",[355,581,583,585,588,590],{"class":357,"line":582},18,[355,584,534],{"class":385},[355,586,587],{"class":365},".semaphore ",[355,589,540],{"class":361},[355,591,592],{"class":365}," semaphore;\n",[355,594,596],{"class":357,"line":595},19,[355,597,598],{"class":365},"    }\n",[355,600,602],{"class":357,"line":601},20,[355,603,373],{"emptyLinePlaceholder":372},[355,605,607],{"class":357,"line":606},21,[355,608,610],{"class":609},"sAwPA","    \u002F\u002F Getters\n",[355,612,614],{"class":357,"line":613},22,[355,615,616],{"class":365},"}\n",[340,618,620],{"id":619},"clase-fifo","Clase FIFO",[345,622,624],{"className":347,"code":623,"language":349,"meta":350,"style":350},"package app.fifo;\n\nimport java.util.LinkedList;\nimport java.util.Queue;\nimport java.util.concurrent.Semaphore;\n\npublic class FIFO {\n    private Queue\u003CProcess> queue;\n    private Semaphore semaphore;\n\n    public FIFO() {\n        this.queue = new LinkedList\u003C>();\n        this.semaphore = new Semaphore(1);\n    }\n\n    public void addProcess(Process FCFSProcess) throws InterruptedException {\n        semaphore.acquire();\n        try {\n            queue.add(FCFSProcess);\n        } finally {\n            semaphore.release();\n        }\n    }\n\n    public Process processNext() throws InterruptedException {\n        semaphore.acquire();\n        try {\n            return queue.poll();\n        } finally {\n            semaphore.release();\n        }\n    }\n\n    public boolean isEmpty() {\n        return queue.isEmpty();\n    }\n}\n",[352,625,626,632,636,643,650,656,660,671,684,690,694,703,718,739,743,747,772,783,790,801,811,821,826,831,836,854,863,870,884,893,902,907,912,917,930,943,948],{"__ignoreMap":350},[355,627,628,630],{"class":357,"line":358},[355,629,362],{"class":361},[355,631,366],{"class":365},[355,633,634],{"class":357,"line":369},[355,635,373],{"emptyLinePlaceholder":372},[355,637,638,640],{"class":357,"line":376},[355,639,379],{"class":361},[355,641,642],{"class":365}," java.util.LinkedList;\n",[355,644,645,647],{"class":357,"line":392},[355,646,379],{"class":361},[355,648,649],{"class":365}," java.util.Queue;\n",[355,651,652,654],{"class":357,"line":400},[355,653,379],{"class":361},[355,655,397],{"class":365},[355,657,658],{"class":357,"line":405},[355,659,373],{"emptyLinePlaceholder":372},[355,661,662,664,666,669],{"class":357,"line":421},[355,663,408],{"class":361},[355,665,411],{"class":361},[355,667,668],{"class":414}," FIFO",[355,670,418],{"class":365},[355,672,673,675,678,681],{"class":357,"line":436},[355,674,424],{"class":361},[355,676,677],{"class":365}," Queue\u003C",[355,679,680],{"class":361},"Process",[355,682,683],{"class":365},"> queue;\n",[355,685,686,688],{"class":357,"line":448},[355,687,424],{"class":361},[355,689,475],{"class":365},[355,691,692],{"class":357,"line":460},[355,693,373],{"emptyLinePlaceholder":372},[355,695,696,698,700],{"class":357,"line":470},[355,697,486],{"class":361},[355,699,668],{"class":414},[355,701,702],{"class":365},"() {\n",[355,704,705,707,710,712,715],{"class":357,"line":478},[355,706,534],{"class":385},[355,708,709],{"class":365},".queue ",[355,711,540],{"class":361},[355,713,714],{"class":361}," new",[355,716,717],{"class":365}," LinkedList\u003C>();\n",[355,719,720,722,724,726,728,731,733,736],{"class":357,"line":483},[355,721,534],{"class":385},[355,723,587],{"class":365},[355,725,540],{"class":361},[355,727,714],{"class":361},[355,729,730],{"class":414}," Semaphore",[355,732,491],{"class":365},[355,734,735],{"class":385},"1",[355,737,738],{"class":365},");\n",[355,740,741],{"class":357,"line":531},[355,742,598],{"class":365},[355,744,745],{"class":357,"line":545},[355,746,373],{"emptyLinePlaceholder":372},[355,748,749,751,754,757,760,763,766,769],{"class":357,"line":557},[355,750,486],{"class":361},[355,752,753],{"class":361}," void",[355,755,756],{"class":414}," addProcess",[355,758,759],{"class":365},"(Process ",[355,761,762],{"class":497},"FCFSProcess",[355,764,765],{"class":365},") ",[355,767,768],{"class":361},"throws",[355,770,771],{"class":365}," InterruptedException {\n",[355,773,774,777,780],{"class":357,"line":569},[355,775,776],{"class":365},"        semaphore.",[355,778,779],{"class":414},"acquire",[355,781,782],{"class":365},"();\n",[355,784,785,788],{"class":357,"line":582},[355,786,787],{"class":361},"        try",[355,789,418],{"class":365},[355,791,792,795,798],{"class":357,"line":595},[355,793,794],{"class":365},"            queue.",[355,796,797],{"class":414},"add",[355,799,800],{"class":365},"(FCFSProcess);\n",[355,802,803,806,809],{"class":357,"line":601},[355,804,805],{"class":365},"        } ",[355,807,808],{"class":361},"finally",[355,810,418],{"class":365},[355,812,813,816,819],{"class":357,"line":606},[355,814,815],{"class":365},"            semaphore.",[355,817,818],{"class":414},"release",[355,820,782],{"class":365},[355,822,823],{"class":357,"line":613},[355,824,825],{"class":365},"        }\n",[355,827,829],{"class":357,"line":828},23,[355,830,598],{"class":365},[355,832,834],{"class":357,"line":833},24,[355,835,373],{"emptyLinePlaceholder":372},[355,837,839,841,844,847,850,852],{"class":357,"line":838},25,[355,840,486],{"class":361},[355,842,843],{"class":365}," Process ",[355,845,846],{"class":414},"processNext",[355,848,849],{"class":365},"() ",[355,851,768],{"class":361},[355,853,771],{"class":365},[355,855,857,859,861],{"class":357,"line":856},26,[355,858,776],{"class":365},[355,860,779],{"class":414},[355,862,782],{"class":365},[355,864,866,868],{"class":357,"line":865},27,[355,867,787],{"class":361},[355,869,418],{"class":365},[355,871,873,876,879,882],{"class":357,"line":872},28,[355,874,875],{"class":361},"            return",[355,877,878],{"class":365}," queue.",[355,880,881],{"class":414},"poll",[355,883,782],{"class":365},[355,885,887,889,891],{"class":357,"line":886},29,[355,888,805],{"class":365},[355,890,808],{"class":361},[355,892,418],{"class":365},[355,894,896,898,900],{"class":357,"line":895},30,[355,897,815],{"class":365},[355,899,818],{"class":414},[355,901,782],{"class":365},[355,903,905],{"class":357,"line":904},31,[355,906,825],{"class":365},[355,908,910],{"class":357,"line":909},32,[355,911,598],{"class":365},[355,913,915],{"class":357,"line":914},33,[355,916,373],{"emptyLinePlaceholder":372},[355,918,920,922,925,928],{"class":357,"line":919},34,[355,921,486],{"class":361},[355,923,924],{"class":361}," boolean",[355,926,927],{"class":414}," isEmpty",[355,929,702],{"class":365},[355,931,933,936,938,941],{"class":357,"line":932},35,[355,934,935],{"class":361},"        return",[355,937,878],{"class":365},[355,939,940],{"class":414},"isEmpty",[355,942,782],{"class":365},[355,944,946],{"class":357,"line":945},36,[355,947,598],{"class":365},[355,949,951],{"class":357,"line":950},37,[355,952,616],{"class":365},[340,954,956],{"id":955},"interfaz-gráfica","Interfaz Gráfica",[345,958,960],{"className":347,"code":959,"language":349,"meta":350,"style":350},"package app.fifo;\n\nimport javax.swing.*;\nimport java.awt.*;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\n\npublic class FIFOApp extends JFrame {\n    private FIFO fifo;\n    private JTextArea queueArea;\n    private JButton addButton;\n\n    public FIFOApp() {\n        fifo = new FIFO();\n        initUI();\n    }\n\n    private void initUI() {\n        setTitle(\"Proceso FIFO con Semáforos\");\n        setSize(400, 300);\n        setDefaultCloseOperation(EXIT_ON_CLOSE);\n        setLayout(new BorderLayout());\n\n        queueArea = new JTextArea();\n        queueArea.setEditable(false);\n        add(new JScrollPane(queueArea), BorderLayout.CENTER);\n\n        addButton = new JButton(\"Agregar Proceso\");\n        add(addButton, BorderLayout.SOUTH);\n\n        addButton.addActionListener(new ActionListener() {\n            @Override\n            public void actionPerformed(ActionEvent e) {\n                try {\n                    Process FCFSProcess = new Process(fifo.queue.size() + 1, (int) (Math.random() * 10), (int) (Math.random() * 10), Color.BLUE, fifo.semaphore);\n                    fifo.addProcess(FCFSProcess);\n                    updateQueueDisplay();\n                } catch (InterruptedException ex) {\n                    ex.printStackTrace();\n                }\n            }\n        });\n    }\n\n    private void updateQueueDisplay() {\n        StringBuilder sb = new StringBuilder();\n        for (Process FCFSProcess : fifo.queue) {\n            sb.append(\"Proceso ID: \").append(FCFSProcess.getId()).append(\", Tiempo de Llegada: \").append(FCFSProcess.getArrivalTime()).append(\", Tiempo de Procesamiento: \").append(FCFSProcess.getProcessingTime()).append(\"\\n\");\n        }\n        queueArea.setText(sb.toString());\n    }\n\n    public static void main(String[] args) {\n        SwingUtilities.invokeLater(() -> {\n            FIFOApp app = new FIFOApp();\n            app.setVisible(true);\n        });\n    }\n}\n",[352,961,962,968,972,983,993,1000,1007,1011,1028,1035,1042,1049,1053,1061,1074,1081,1085,1089,1100,1113,1130,1138,1154,1158,1172,1187,1202,1206,1225,1232,1236,1253,1261,1279,1286,1347,1357,1364,1381,1392,1398,1404,1410,1415,1420,1432,1447,1462,1540,1545,1561,1566,1571,1597,1614,1628,1644,1649,1654],{"__ignoreMap":350},[355,963,964,966],{"class":357,"line":358},[355,965,362],{"class":361},[355,967,366],{"class":365},[355,969,970],{"class":357,"line":369},[355,971,373],{"emptyLinePlaceholder":372},[355,973,974,976,979,981],{"class":357,"line":376},[355,975,379],{"class":361},[355,977,978],{"class":365}," javax.swing.",[355,980,386],{"class":385},[355,982,389],{"class":365},[355,984,985,987,989,991],{"class":357,"line":392},[355,986,379],{"class":361},[355,988,382],{"class":365},[355,990,386],{"class":385},[355,992,389],{"class":365},[355,994,995,997],{"class":357,"line":400},[355,996,379],{"class":361},[355,998,999],{"class":365}," java.awt.event.ActionEvent;\n",[355,1001,1002,1004],{"class":357,"line":405},[355,1003,379],{"class":361},[355,1005,1006],{"class":365}," java.awt.event.ActionListener;\n",[355,1008,1009],{"class":357,"line":421},[355,1010,373],{"emptyLinePlaceholder":372},[355,1012,1013,1015,1017,1020,1023,1026],{"class":357,"line":436},[355,1014,408],{"class":361},[355,1016,411],{"class":361},[355,1018,1019],{"class":414}," FIFOApp",[355,1021,1022],{"class":361}," extends",[355,1024,1025],{"class":414}," JFrame",[355,1027,418],{"class":365},[355,1029,1030,1032],{"class":357,"line":448},[355,1031,424],{"class":361},[355,1033,1034],{"class":365}," FIFO fifo;\n",[355,1036,1037,1039],{"class":357,"line":460},[355,1038,424],{"class":361},[355,1040,1041],{"class":365}," JTextArea queueArea;\n",[355,1043,1044,1046],{"class":357,"line":470},[355,1045,424],{"class":361},[355,1047,1048],{"class":365}," JButton addButton;\n",[355,1050,1051],{"class":357,"line":478},[355,1052,373],{"emptyLinePlaceholder":372},[355,1054,1055,1057,1059],{"class":357,"line":483},[355,1056,486],{"class":361},[355,1058,1019],{"class":414},[355,1060,702],{"class":365},[355,1062,1063,1066,1068,1070,1072],{"class":357,"line":531},[355,1064,1065],{"class":365},"        fifo ",[355,1067,540],{"class":361},[355,1069,714],{"class":361},[355,1071,668],{"class":414},[355,1073,782],{"class":365},[355,1075,1076,1079],{"class":357,"line":545},[355,1077,1078],{"class":414},"        initUI",[355,1080,782],{"class":365},[355,1082,1083],{"class":357,"line":557},[355,1084,598],{"class":365},[355,1086,1087],{"class":357,"line":569},[355,1088,373],{"emptyLinePlaceholder":372},[355,1090,1091,1093,1095,1098],{"class":357,"line":582},[355,1092,424],{"class":361},[355,1094,753],{"class":361},[355,1096,1097],{"class":414}," initUI",[355,1099,702],{"class":365},[355,1101,1102,1105,1107,1111],{"class":357,"line":595},[355,1103,1104],{"class":414},"        setTitle",[355,1106,491],{"class":365},[355,1108,1110],{"class":1109},"sU2Wk","\"Proceso FIFO con Semáforos\"",[355,1112,738],{"class":365},[355,1114,1115,1118,1120,1123,1125,1128],{"class":357,"line":601},[355,1116,1117],{"class":414},"        setSize",[355,1119,491],{"class":365},[355,1121,1122],{"class":385},"400",[355,1124,501],{"class":365},[355,1126,1127],{"class":385},"300",[355,1129,738],{"class":365},[355,1131,1132,1135],{"class":357,"line":606},[355,1133,1134],{"class":414},"        setDefaultCloseOperation",[355,1136,1137],{"class":365},"(EXIT_ON_CLOSE);\n",[355,1139,1140,1143,1145,1148,1151],{"class":357,"line":613},[355,1141,1142],{"class":414},"        setLayout",[355,1144,491],{"class":365},[355,1146,1147],{"class":361},"new",[355,1149,1150],{"class":414}," BorderLayout",[355,1152,1153],{"class":365},"());\n",[355,1155,1156],{"class":357,"line":828},[355,1157,373],{"emptyLinePlaceholder":372},[355,1159,1160,1163,1165,1167,1170],{"class":357,"line":833},[355,1161,1162],{"class":365},"        queueArea ",[355,1164,540],{"class":361},[355,1166,714],{"class":361},[355,1168,1169],{"class":414}," JTextArea",[355,1171,782],{"class":365},[355,1173,1174,1177,1180,1182,1185],{"class":357,"line":838},[355,1175,1176],{"class":365},"        queueArea.",[355,1178,1179],{"class":414},"setEditable",[355,1181,491],{"class":365},[355,1183,1184],{"class":385},"false",[355,1186,738],{"class":365},[355,1188,1189,1192,1194,1196,1199],{"class":357,"line":856},[355,1190,1191],{"class":414},"        add",[355,1193,491],{"class":365},[355,1195,1147],{"class":361},[355,1197,1198],{"class":414}," JScrollPane",[355,1200,1201],{"class":365},"(queueArea), BorderLayout.CENTER);\n",[355,1203,1204],{"class":357,"line":865},[355,1205,373],{"emptyLinePlaceholder":372},[355,1207,1208,1211,1213,1215,1218,1220,1223],{"class":357,"line":872},[355,1209,1210],{"class":365},"        addButton ",[355,1212,540],{"class":361},[355,1214,714],{"class":361},[355,1216,1217],{"class":414}," JButton",[355,1219,491],{"class":365},[355,1221,1222],{"class":1109},"\"Agregar Proceso\"",[355,1224,738],{"class":365},[355,1226,1227,1229],{"class":357,"line":886},[355,1228,1191],{"class":414},[355,1230,1231],{"class":365},"(addButton, BorderLayout.SOUTH);\n",[355,1233,1234],{"class":357,"line":895},[355,1235,373],{"emptyLinePlaceholder":372},[355,1237,1238,1241,1244,1246,1248,1251],{"class":357,"line":904},[355,1239,1240],{"class":365},"        addButton.",[355,1242,1243],{"class":414},"addActionListener",[355,1245,491],{"class":365},[355,1247,1147],{"class":361},[355,1249,1250],{"class":414}," ActionListener",[355,1252,702],{"class":365},[355,1254,1255,1258],{"class":357,"line":909},[355,1256,1257],{"class":365},"            @",[355,1259,1260],{"class":361},"Override\n",[355,1262,1263,1266,1268,1271,1274,1277],{"class":357,"line":914},[355,1264,1265],{"class":361},"            public",[355,1267,753],{"class":361},[355,1269,1270],{"class":414}," actionPerformed",[355,1272,1273],{"class":365},"(ActionEvent ",[355,1275,1276],{"class":497},"e",[355,1278,528],{"class":365},[355,1280,1281,1284],{"class":357,"line":919},[355,1282,1283],{"class":361},"                try",[355,1285,418],{"class":365},[355,1287,1288,1291,1293,1295,1297,1300,1303,1305,1308,1311,1314,1316,1319,1322,1324,1326,1329,1332,1334,1336,1338,1340,1342,1344],{"class":357,"line":932},[355,1289,1290],{"class":365},"                    Process FCFSProcess ",[355,1292,540],{"class":361},[355,1294,714],{"class":361},[355,1296,415],{"class":414},[355,1298,1299],{"class":365},"(fifo.queue.",[355,1301,1302],{"class":414},"size",[355,1304,849],{"class":365},[355,1306,1307],{"class":361},"+",[355,1309,1310],{"class":385}," 1",[355,1312,1313],{"class":365},", (",[355,1315,494],{"class":361},[355,1317,1318],{"class":365},") (Math.",[355,1320,1321],{"class":414},"random",[355,1323,849],{"class":365},[355,1325,386],{"class":361},[355,1327,1328],{"class":385}," 10",[355,1330,1331],{"class":365},"), (",[355,1333,494],{"class":361},[355,1335,1318],{"class":365},[355,1337,1321],{"class":414},[355,1339,849],{"class":365},[355,1341,386],{"class":361},[355,1343,1328],{"class":385},[355,1345,1346],{"class":365},"), Color.BLUE, fifo.semaphore);\n",[355,1348,1349,1352,1355],{"class":357,"line":945},[355,1350,1351],{"class":365},"                    fifo.",[355,1353,1354],{"class":414},"addProcess",[355,1356,800],{"class":365},[355,1358,1359,1362],{"class":357,"line":950},[355,1360,1361],{"class":414},"                    updateQueueDisplay",[355,1363,782],{"class":365},[355,1365,1367,1370,1373,1376,1379],{"class":357,"line":1366},38,[355,1368,1369],{"class":365},"                } ",[355,1371,1372],{"class":361},"catch",[355,1374,1375],{"class":365}," (InterruptedException ",[355,1377,1378],{"class":497},"ex",[355,1380,528],{"class":365},[355,1382,1384,1387,1390],{"class":357,"line":1383},39,[355,1385,1386],{"class":365},"                    ex.",[355,1388,1389],{"class":414},"printStackTrace",[355,1391,782],{"class":365},[355,1393,1395],{"class":357,"line":1394},40,[355,1396,1397],{"class":365},"                }\n",[355,1399,1401],{"class":357,"line":1400},41,[355,1402,1403],{"class":365},"            }\n",[355,1405,1407],{"class":357,"line":1406},42,[355,1408,1409],{"class":365},"        });\n",[355,1411,1413],{"class":357,"line":1412},43,[355,1414,598],{"class":365},[355,1416,1418],{"class":357,"line":1417},44,[355,1419,373],{"emptyLinePlaceholder":372},[355,1421,1423,1425,1427,1430],{"class":357,"line":1422},45,[355,1424,424],{"class":361},[355,1426,753],{"class":361},[355,1428,1429],{"class":414}," updateQueueDisplay",[355,1431,702],{"class":365},[355,1433,1435,1438,1440,1442,1445],{"class":357,"line":1434},46,[355,1436,1437],{"class":365},"        StringBuilder sb ",[355,1439,540],{"class":361},[355,1441,714],{"class":361},[355,1443,1444],{"class":414}," StringBuilder",[355,1446,782],{"class":365},[355,1448,1450,1453,1456,1459],{"class":357,"line":1449},47,[355,1451,1452],{"class":361},"        for",[355,1454,1455],{"class":365}," (Process FCFSProcess ",[355,1457,1458],{"class":361},":",[355,1460,1461],{"class":365}," fifo.queue) {\n",[355,1463,1465,1468,1471,1473,1476,1479,1481,1484,1487,1490,1492,1494,1497,1499,1501,1503,1506,1508,1510,1512,1515,1517,1519,1521,1524,1526,1528,1530,1533,1536,1538],{"class":357,"line":1464},48,[355,1466,1467],{"class":365},"            sb.",[355,1469,1470],{"class":414},"append",[355,1472,491],{"class":365},[355,1474,1475],{"class":1109},"\"Proceso ID: \"",[355,1477,1478],{"class":365},").",[355,1480,1470],{"class":414},[355,1482,1483],{"class":365},"(FCFSProcess.",[355,1485,1486],{"class":414},"getId",[355,1488,1489],{"class":365},"()).",[355,1491,1470],{"class":414},[355,1493,491],{"class":365},[355,1495,1496],{"class":1109},"\", Tiempo de Llegada: \"",[355,1498,1478],{"class":365},[355,1500,1470],{"class":414},[355,1502,1483],{"class":365},[355,1504,1505],{"class":414},"getArrivalTime",[355,1507,1489],{"class":365},[355,1509,1470],{"class":414},[355,1511,491],{"class":365},[355,1513,1514],{"class":1109},"\", Tiempo de Procesamiento: \"",[355,1516,1478],{"class":365},[355,1518,1470],{"class":414},[355,1520,1483],{"class":365},[355,1522,1523],{"class":414},"getProcessingTime",[355,1525,1489],{"class":365},[355,1527,1470],{"class":414},[355,1529,491],{"class":365},[355,1531,1532],{"class":1109},"\"",[355,1534,1535],{"class":385},"\\n",[355,1537,1532],{"class":1109},[355,1539,738],{"class":365},[355,1541,1543],{"class":357,"line":1542},49,[355,1544,825],{"class":365},[355,1546,1548,1550,1553,1556,1559],{"class":357,"line":1547},50,[355,1549,1176],{"class":365},[355,1551,1552],{"class":414},"setText",[355,1554,1555],{"class":365},"(sb.",[355,1557,1558],{"class":414},"toString",[355,1560,1153],{"class":365},[355,1562,1564],{"class":357,"line":1563},51,[355,1565,598],{"class":365},[355,1567,1569],{"class":357,"line":1568},52,[355,1570,373],{"emptyLinePlaceholder":372},[355,1572,1574,1576,1579,1581,1584,1586,1589,1592,1595],{"class":357,"line":1573},53,[355,1575,486],{"class":361},[355,1577,1578],{"class":361}," static",[355,1580,753],{"class":361},[355,1582,1583],{"class":414}," main",[355,1585,491],{"class":365},[355,1587,1588],{"class":361},"String",[355,1590,1591],{"class":365},"[] ",[355,1593,1594],{"class":497},"args",[355,1596,528],{"class":365},[355,1598,1600,1603,1606,1609,1612],{"class":357,"line":1599},54,[355,1601,1602],{"class":365},"        SwingUtilities.",[355,1604,1605],{"class":414},"invokeLater",[355,1607,1608],{"class":365},"(() ",[355,1610,1611],{"class":361},"->",[355,1613,418],{"class":365},[355,1615,1617,1620,1622,1624,1626],{"class":357,"line":1616},55,[355,1618,1619],{"class":365},"            FIFOApp app ",[355,1621,540],{"class":361},[355,1623,714],{"class":361},[355,1625,1019],{"class":414},[355,1627,782],{"class":365},[355,1629,1631,1634,1637,1639,1642],{"class":357,"line":1630},56,[355,1632,1633],{"class":365},"            app.",[355,1635,1636],{"class":414},"setVisible",[355,1638,491],{"class":365},[355,1640,1641],{"class":385},"true",[355,1643,738],{"class":365},[355,1645,1647],{"class":357,"line":1646},57,[355,1648,1409],{"class":365},[355,1650,1652],{"class":357,"line":1651},58,[355,1653,598],{"class":365},[355,1655,1657],{"class":357,"line":1656},59,[355,1658,616],{"class":365},[1660,1661,1662],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}",{"title":350,"searchDepth":369,"depth":369,"links":1664},[1665,1666,1667],{"id":306,"depth":369,"text":307},{"id":314,"depth":369,"text":315},{"id":334,"depth":369,"text":335,"children":1668},[1669,1670,1671],{"id":342,"depth":376,"text":343},{"id":619,"depth":376,"text":620},{"id":955,"depth":376,"text":956},"Implementación de un proceso FIFO utilizando semáforos para controlar el acceso a un recurso compartido, con una interfaz gráfica en Swing.","md",null,{"date":1676},"2024-06-01",{"title":254,"description":1672},"cjtaUgR_5O_ApJrn99CnqIQFhnI3mAZGvOYkxrRL39Q",[1680,1682],{"title":250,"path":251,"stem":252,"description":1681,"icon":83,"children":-1},"En este ejemplo se muestra cómo un restaurante maneja los pedidos de los clientes utilizando un sistema de colas. Se explicará cómo se procesan los pedidos, cómo se asignan a los cocineros y cómo se asegura que los clientes reciban sus pedidos de manera eficiente.",{"title":263,"path":264,"stem":265,"description":1683,"icon":25,"children":-1},"Explora los conceptos básicos del diseño de interfaces y su importancia en la experiencia del usuario.",1775101376549]