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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top