Buenas,
muchas gracias. Pregunto un poco más. He hecho un ejemplo para para poder comprender más el funcionamiento. En el ejemplo únicamente hay 3 "JLabel" que realizan una cuenta ascendente 0/100000000, cada uno con sus botones de empezar, detener y seguir. Aun que estos dos últimos me da igual por el momento.
- El primer "JLabel" con su botón de comienzo sigue el proceso normal de la aplicación, no pasa por ningún hilo.
- Los dos siguientes pasan por hilo, cada uno en el momento en el que se le de a -empezar, y empieza la cuenta en ese orden.
Tengo una clase "hilo" que en su méto "run" llama a la clase algoritmo donde empieza la secuencia. El código de la clase "hilo" es el siguiente.
package PackEjemThread1;
import javax.swing.*;
public class hilo
extends Thread{
private algoritmo algo_0 = new algoritmo();
private boolean terminar_0 = false;
//private int a = 0;
//this.a = a;
this.jlbl_0 = jlbl_0;
}
public void run(){
while(!terminar_0){
//lo que se ejecutara.
algo_0.generarsecuencia(jlbl_0);
//this.terminar_0 = true;
}
}
public void setTerminar0(boolean terminar0){
this.terminar_0=terminar0;
}
}
Ahora el código de la clase "algoritmo":
package PackEjemThread1;
import java.*;
import java.awt.*;
import javax.swing.*;
public class algoritmo {
public algoritmo(){}
public void generarsecuencia
(JLabel jlbl
){ for(int i = 0; i <= 100000000; i++){
for(int a = 0; a < 100000000; a++){
for(int z = 0; z < 100000000; z++){
}
}
jlbl.setText(i+"/100000000");
}
}
public void generarsecuencia1
(JLabel jlbl
){ for(int i = 0; i <= 100000000; i++){
jlbl.setText(i+"/100000000");
}
}
}
La clase "algoritmo" no tiene nada especial. Bueno lo que he podido comprobar es que funcionan en paralelo y es perfecto. Pero en el ejemplo donde realmente querría utilizarlo no es así en el momento en el que empieza a trabajar con la BD.
Bueno pues realizo una pregunta más especifica. En el código que mostré al principio se ve que primero se trabaja con una .txt, y después la información la paso a la BD. Exactamente en el .txt hay por ejempo 500000 palabras, y una a una la cotejo con la BD y si no existe la guardo. El problema es que con el archivo se trabaja bien, pero en el momento de guardar en la BD saltan excepciones por todos lados... Cosa que no pasa si no utilizo hilos... Hay que seguir un orden especial con las clases que se llaman desde el método "run()" de la clase "hilo"¿?¿?
Se os ocurre por que saltán excepciones en la clase que conecta con la BD¿?
Bueno estoy escribiendo mucho, pero ya de paso termino bien. Como veis en el código anterior "ALGORIT.FiltradoSeparacion(Contenido);" desde el método se llama a al siguiente código:
package PackApliGenerarDiccionario1;
import java.*;
import java.util.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.JOptionPane;
public class DBManagement {
private String drv
= "com.mysql.jdbc.Driver"; private String db
= "jdbc:mysql://localhost:3306/bd_diccionario1"; private String userpass
= "root"; private int idPalabra = 0;
private int MaxIdPalabra = 0;
public int valortotal = 0;
private int valorcorrecto = 0;
private int valormomento = 0;
public DBManagement(){
try{
Class.forName(drv);
St = Conectar.createStatement();
e.printStackTrace();
}
}
public void newCodigo(){
String SQL
= "SELECT MAX(idpalabras) FROM palabras;"; try{
aux.next();
idPalabra = aux.getInt(1);
e.printStackTrace();
}
}
valormomento+=1;
if(Cotejar(dato) == 0){
valorcorrecto +=1;
newCodigo();
idPalabra +=1;
String SQL
= "INSERT INTO palabras (idpalabras, palabras) Values ('" + idPalabra
+ "','" + dato
+ "');"; try{
St.executeUpdate(SQL);
e.printStackTrace();
}
}
jlbl.setText(valorcorrecto+"/"+valormomento+"/"+valortotal);
}
String SQL
= "SELECT palabras FROM palabras WHERE palabras = '"+ d
+"';"; int s = 0;
try{
aux.next();
palabra = aux.getString(1);
//JOptionPane.showMessageDialog(null,""+palabra,"Message",JOptionPane.INFORMATION_MESSAGE);
if((palabra == null) || (palabra == "") || (palabra == " ")){
s = 0;
}else{
s = 1;
}
//JOptionPane.showMessageDialog(null,""+s,"Message",JOptionPane.INFORMATION_MESSAGE);
ex.printStackTrace();
}
return s;
}
return St;
}
}
Bueno pues nada, solo recordar que el código funciona en una situación normal, pero no si se hace a través de hilos XD.
Muchas gracias a todos, y sobre todo a los que lean hasta el final este pestiño.
Saludos!!!