2010-09-07 9 views
0

Comment puis-je implémenter une méthode de thread run() si je crée un Thread Global?Threads in java

Je veux dire que si je crée un Thread Globalement alors puis-je implémenter sa méthode run() {"public void run()"} n'importe où dans mon Application?

Dans la méthode run(), je dois écrire le code pour effectuer une action. Si je peux le faire alors s'il vous plaît quelqu'un peut-il me montrer brièvement comment le faire en particulier.

Je suis un peu confus !!!!!

Merci, david

+0

Voulez-vous savoir comment créer des threads en Java? S'il vous plaît soyez précis et clair? Et pour ton autre fil? http://stackoverflow.com/questions/3656691/thread-calling-in-android – bdhar

+0

Je suppose que vous avez déjà fait une recherche évidente http://www.google.co.uk/search?q=java+threads+ exemples Qu'en est-il de ceux-ci que vous avez trouvé confus? –

Répondre

1

Un thread est représenté par un objet Thread. Vous créez un objet Thread en tant que classe interne anonyme ou en sous-classant Thread avec votre propre classe qui implémente run(). Voici la version anonyme.

Thread t = new Thread() { 
    public void run() { 
    // Do something on another thread 
    } 
} 

Voici la version sous-classe

class MyThread extends Thread() { 
    public void run() { 
    // Do something on another thread 
    } 
} 
Thread t = new MyThread(); 

En général, vous utilisez une classe anonyme pour une opération rapide et sale et vous créez une sous-classe si le thread a une charge utile (paramètres, résultats, etc.)

Notez que ces snippets déclarent simplement le thread. Pour exécuter le thread, vous devez appeler start():

t.start(); 

C'est tout. Lorsque le thread démarre, il appelle run() sur le nouveau thread. Le thread principal et le nouveau thread s'exécutent en parallèle.

Des sujets plus avancés comme la synchronisation de threads devraient vraiment être abordés lorsque vous avez les bases développées.

+0

Quel est le fil principal et le nouveau fil dans l'exemple ci-dessus? –

+0

Le thread de lancement (qui n'est pas nécessairement le thread principal de l'application) est celui qui crée un objet Thread, puis appelle start(). Le contenu de la méthode run() est exécuté sur le nouveau thread. Donc, si la méthode run() dit System.out.println ("hello world"), cette commande sera exécutée par le nouveau thread. Vous pouvez générer 5 instances du thread et vous obtiendrez 5 messages Hello, un par thread.Lorsque run() se termine, le thread sera terminé, après avoir dit bonjour world, tous les 5 threads se termineront. – locka

+0

Merci, je l'ai maintenant –

4

Compte tenu de la classe suivante:

class MyWorker implements Runnable { 
    @Override 
    public void run() { 
} 

Vous pouvez créer et lancer un fil avec:

Thread thread = new Thread(m_worker); 
thread.setDaemon(true); // If the thread should not keep the process alive. 
thread.setName("MyThreadName"); 
thread.start(); 

Vous pouvez mettre en œuvre le Runnable en haut niveau class, une classe imbriquée ou une classe anonyme.

La programmation multi-thread nécessite une attention particulière. "Effective Java" de Joshua Bloch, 2e éd., A une introduction à certaines questions dans son chapitre "Concurrency". Cela vaudrait la peine d'être lu. Une suggestion consiste à préférer les exécuteurs et les tâches aux threads bruts.