Skip to content

Instantly share code, notes, and snippets.

@HiroNakamura
Created October 19, 2024 23:40
Show Gist options
  • Save HiroNakamura/ca4aed7c8a6b7eace217b4c7c7564d6b to your computer and use it in GitHub Desktop.
Save HiroNakamura/ca4aed7c8a6b7eace217b4c7c7564d6b to your computer and use it in GitHub Desktop.
Curso de Java medio a avanzado
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