Thread
Rymita
Messages postés
8
Statut
Membre
-
Rymita Messages postés 8 Statut Membre -
Rymita Messages postés 8 Statut Membre -
Bonjour,
je veux savoir comment est ce que je peux définir 2 ou plusieurs Thread dans une même classe. J'ai ma classe implements Runnable et dans la methode run() j'ai écrit un certain code de connexion à la base maintenant je veux définir un autre Thread dans la meme classe comment je fais??
Merci de m'aider
je veux savoir comment est ce que je peux définir 2 ou plusieurs Thread dans une même classe. J'ai ma classe implements Runnable et dans la methode run() j'ai écrit un certain code de connexion à la base maintenant je veux définir un autre Thread dans la meme classe comment je fais??
Merci de m'aider
A voir également:
- Thread
- Compte thread - Accueil - Réseaux sociaux
- Thread instagram c'est quoi - Accueil - Guide réseaux sociaux
- Fausse appli Threads : déjà une imitation frelatée et dangereuse ! - Accueil - Guide arnaque
- Thread - Guide
- Thread informatique ✓ - Forum Réseaux sociaux
je voudrais savoir aussi lorsque je lance un thread, il s'exécute jusqu'à quand ? comment est ce que je peux l'arréter pour lancer un autre thread?
Tu peux attendre qu'un thread se termine en utilisant la méthode join().
Pour forcer l'arrêt d'un Thread, c'est un peu compliqué car il faut faire ça proprement.
Ça passe par l'utilisation de la méthode interrupt() sur le thread, ce qui va passer la méthode isInterrupted à true, il faut donc gérer cette possibilité à l'intérieur de la méthode run, l'exception associée est InterruptedException, tu dois faire un try/catch dessus et si tu l'interceptes arrêter la méthode run.
Exemple avec ces différents points :
public class ThreadCompteur extends Thread { private final int id; private final int n; private final long millis; public ThreadCompteur(int id, int n, long millis) { this.id = id; this.n = n; this.millis = millis; } @Override public void run() { for (int i=0; i<n; i++) { System.out.println("Thread "+id+" step "+i); if (isInterrupted()) { System.err.println("Thread "+id+" isInterrupted"); return; } try { sleep(millis); } catch (InterruptedException e) { System.err.println("Thread "+id+" isInterrupted"); return; } } } }public class Test { public static boolean[] eratosthene(int n) { boolean[] prime = new boolean[n]; boolean[] compute = new boolean[n]; for (int i = 2; i < n; i++ ) { if (compute[i]) continue; prime[i] = true; for (int j = i; j < n; j += i) compute[j] = true; } return prime; } public static void main(String[] args) throws InterruptedException { Thread[] threads = new Thread[10]; System.out.println("Ready ?"); for (int i=0; i<threads.length; i++) { int n = 10+i; threads[i] = new ThreadCompteur(i, n, 10000/n); } System.out.println("Go !"); for (int i=0; i<threads.length; i++) threads[i].start(); System.out.println("Wait..."); for (int i=0; i<threads.length; i++) threads[i].join(); System.out.println("Finish !!!"); } }Remarque : ici je ne me sers pas vraiment de l'interruption, mais il est important d'y penser au cas où tu veuilles arrêter les threads avant leur fin.