Di base Java Multi-Threading Question
-
20-09-2019 - |
Domanda
Quando un oggetto viene creata un'istanza in Java, si è legato al filo che un'istanza in? Perché quando anonimo implementare un'interfaccia in un thread, e passare ad un altro filo per essere eseguito, tutti i metodi è gestita nel thread originale. Se essi sono tenuti a loro thread di creazione, c'è comunque di creare un oggetto che verrà eseguito in qualsiasi discussione chiama?
Soluzione
Se discussione A crea un oggetto:
MyClass.staticMember = new Runnable() {...};
e filo B richiama un metodo su quell'oggetto:
MyClass.staticMember.run();
allora il metodo run()
eseguirà in discussione B .
Discussione A si limiterà a continuare a correre qualsiasi codice capita di essere in esecuzione al momento.
Altri suggerimenti
L'oggetto non è legato al filo è stato creato sulla ... l'unico modo avrete i metodi in corso di esecuzione sul thread principale è che se li chiami sul thread principale.
E 'relativamente facile vedere quale thread chiama il metodo ... semplicemente fare una funzione fittizia:
public threadDetect(string which)
{
System.out.println("Executed from " + which + " thread.");
}
Nel thread principale si chiama:
threadDetect("main");
Dal bambino filo si chiama:
threadDetect("child");
Non sono sicuro se l'OP sta usando un modo simile per rilevare quale thread è in esecuzione il metodo, ma questo è un modo per farlo.