Created
October 19, 2024 23:40
-
-
Save HiroNakamura/ca4aed7c8a6b7eace217b4c7c7564d6b to your computer and use it in GitHub Desktop.
Curso de Java medio a avanzado
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.concurrent.ExecutorService; | |
import java.util.concurrent.Executors; | |
// Clases Tornillo y Tuerca | |
class Tornillo { | |
private String numSerie; | |
public String getNumSerie() { | |
return numSerie; | |
} | |
public void setNumSerie(String numSerie) { | |
this.numSerie = numSerie; | |
} | |
} | |
class Tuerca { | |
private String numero; | |
public String getNumero() { | |
return numero; | |
} | |
public void setNumero(String numero) { | |
this.numero = numero; | |
} | |
} | |
// Clase Union, que contiene los datos para Tornillo y Tuerca | |
class Union { | |
private String numero; | |
public Union(String numero) { | |
this.numero = numero; | |
} | |
public String getNumero() { | |
return numero; | |
} | |
} | |
// Tarea que procesa cada Union en un hilo separado | |
class UnionProcessor implements Runnable { | |
private Union union; | |
public UnionProcessor(Union union) { | |
this.union = union; | |
} | |
@Override | |
public void run() { | |
Tornillo tornillo = new Tornillo(); | |
Tuerca tuerca = new Tuerca(); | |
// Simulamos los valores de la tuerca y el tornillo para las validaciones | |
String tuercaMock = "B"; // Cambiar según sea necesario para la validación | |
String tornilloMock = "B"; // Cambiar según sea necesario para la validación | |
// Validaciones | |
if ("C".equals(tuercaMock.substring(0, 1))) { | |
return; // Si la tuerca comienza con "C", continuamos al siguiente Union | |
} | |
if ("A".equals(tornilloMock.substring(0, 1))) { | |
return; // Si el tornillo comienza con "A", continuamos al siguiente Union | |
} | |
// Seteamos los valores correspondientes | |
tuerca.setNumero(union.getNumero()); | |
tornillo.setNumSerie("MX" + union.getNumero() + "-"); | |
// Simulación de inserción en la base de datos | |
insertarTornillo(tornillo); | |
insertarTuerca(tuerca); | |
} | |
// Métodos simulados para insertar en la base de datos | |
public void insertarTornillo(Tornillo tornillo) { | |
System.out.println("Insertando Tornillo: " + tornillo.getNumSerie()); | |
} | |
public void insertarTuerca(Tuerca tuerca) { | |
System.out.println("Insertando Tuerca: " + tuerca.getNumero()); | |
} | |
} | |
public class ProcesarUnionConThreads { | |
public static List<Union> getDatosTablaUnion(String fecha) { | |
// Simular la obtención de datos de la tabla Union | |
List<Union> listaUnion = new ArrayList<>(); | |
listaUnion.add(new Union("001")); | |
listaUnion.add(new Union("002")); | |
listaUnion.add(new Union("003")); | |
return listaUnion; | |
} | |
public static void main(String[] args) { | |
String strFech = "2024-09-29"; | |
// Obtener la lista de Unions (simulado) | |
List<Union> listaUnion = getDatosTablaUnion(strFech); | |
if (listaUnion.size() > 0) { | |
// Creamos un pool de hilos (threads) para procesar cada Union | |
ExecutorService executor = Executors.newFixedThreadPool(3); // Pool de 3 hilos | |
// Recorremos la lista de Unions y procesamos cada una en un hilo separado | |
for (Union union : listaUnion) { | |
UnionProcessor task = new UnionProcessor(union); | |
executor.execute(task); // Ejecutamos la tarea en un hilo | |
} | |
// Cerramos el executor cuando todas las tareas hayan terminado | |
executor.shutdown(); | |
} else { | |
System.out.println("No se encontraron datos para procesar."); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment