public static int do_dispatch(){
{
int prior = this.getPriority();
ThreadCB threadToDispatch=null;
ThreadCB runningThread=null;
TaskCB runningTask=null;
try {
runningTask = MMU.getPTBR().getTask();
runningThread = runningTask.getCurrentThread();
} catch(NullPointerException e) {}
// If necessary, remove current thread from processor and reschedule it.
if(runningThread != null)
{
// Check if quantum is exceeded
if (HTimer.get() < 1)
{
//Increment the priority to lower priority value
prior++;
this.setPriority(prior);
}
//Append to expired
expired[prior].append(this);
runningTask.setCurrentThread(null);
MMU.setPTBR(null);
runningThread.setStatus(ThreadReady);
readyQueue.append(runningThread);
Ein weiteres Beispiel:Was wäre die richtige Art und Weise zu implementieren ‚this‘ Schlüsselwort in statischer Methode
class Sub {
static int y;
public static void foo() {
this.y = 10;
}
}
Ich versuche, mein Programm zu kompilieren, aber ich weiterhin Fehler bei der Verwendung von bekommen das Schlüsselwort this in dieser Situation. Ich verstehe, dass 'this' das Objekt darstellt, das die Methode aufruft und dass statische Methoden nicht an irgendein Objekt gebunden sind.
Was wäre der richtige Weg, um 'dieses' zu implementieren?
Sie können "this" nicht "implementieren". [Es ist in der Sprachspezifikation definiert] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.8.3), und es ist ein Fehler bei der Kompilierung Verwenden Sie es in einer statischen Methode. –
'this' bezieht sich auf die aktuelle Instanz der Klasse, und in einem statischen Kontext gibt es keine Instanz - alle Methoden und Eigenschaften sind auf Klassenebene (aka - sie werden über alle _ Instanzen der Klasse verteilt). Um statische Eigenschaften von der Methode zu bearbeiten, die Sie in Ihrem Code gezeigt haben, würden Sie sie mit dem Klassennamen voranstellen, z. B. "Sub.y = 10". Beachten Sie, dass Sie dies hier nicht tun müssen, da Sie keine vorhandenen Eigenschaften überschreiben. Dh: "y = 10" sollte ausreichen. –
** VANDALISIEREN SIE NICHT IHRE EIGENEN POSTS. ** Ihre Bearbeitung hat Ihre Frage unverständlich gemacht. – EJP