3 Stimmen

Endlosgewinde

Ich habe die folgende Klasse:

public class MovementThread extends Thread {

    private float[] myObject;

    @Override
    public void run() {

    }

    public void setMyObject(float[] array) {
        myObject = array;
    }
}

Die Sache ist die, dass M die ganze Zeit laufen sollte, deshalb habe ich mir überlegt, eine while(true) en el Run method . Allerdings, myObject wird aktualisiert von Thread also wird es nicht passieren, wenn t Thread steckt in der Run method . Auch der Code in der ru myObject ausgeführt wird.

Gibt es einen unkomplizierten Weg o
Ich frage mich nur

2voto

Das Wichtigste zuerst: Standardpraktiken "implementiert Runn ).

A while(true) ist die richtige Idee für while(someBooleanVariable) so dass sie eine

Der derzeitige Weg zu

Ihre Probe mit allen

Beachten Sie, dass

public class MovementThread extends Runnable{

    private float[] myObject;
    volatile boolean stillAlive = true;

    @Override
    public void run() {
       while (stillAlive)
       {
          processMyObject();
          Thread.sleep(1000);
       }

    }

    private synchronized void processMyObject()
    {
       // Modify or read myObject
    }

    public void kill()
    {
       stillAlive = false;
    }  

    public synchronized void setMyObject(float[] array) {
        myObject = array;
    }
}

0voto

Amit Punkte 12845

S

N

//Modifier thread 

synchronized(myObject){
        // do something and update the myObject
        myObject.setSomething(someValue);
}

//Executor thread

synchronized(myObject){
        //do something 
        if(myObject.getSomeValue()==someMeaningfulValue){
             myObject.execute() 
        }
}

   // To immediately update myObject, you can declare it as 

    private volatile MyObjectClassName myObject;

t

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X