return-Anweisung unnötig?!

Status
Nicht offen für weitere Antworten.

Reality

Top Contributor
Hi,
ich habe gerade ein Beispiel für ein Interthread-Kommunikation abgetippt.

Mir ist dabei aufgefallen, dass eine Methode eine Zahl zurückgibt und diese quasi ins Leere fällt, weil sie nicht benutzt wird, denn die Methode geht auch mit void und ohne return.

Code:
class Q
{
int n;
boolean valueSet= false;

  synchronized int get()
  {
  if(!valueSet)
    try
    {
    wait();
    }catch(InterruptedException e)
    {
    System.out.println("InterruptedException caught");
    }

  System.out.println("Nehmen :"+n);
  valueSet= false;
  notify();
  return n;  // Das ist die return-Anweisung
  }

  synchronized void put(int n)
  {
  if(valueSet)
    try
    {
    wait();
    }
    catch (InterruptedException e)
    {
    System.out.println("InterruptedException aufgefangen");
    }

  this.n=n;
  valueSet=true;
  System.out.println("Geben: "+n);
  notify();
  }
}

class Producer implements Runnable
{
Q q;

  Producer(Q q)
  {
  this.q=q;
  new Thread(this, "Producer").start();
  }

  public void run()
  {
  int i=0;
   while(true)
   {
     q.put(i++);
   }
  }
}

class Consumer implements Runnable
{
Q q;

  Consumer(Q q)
  {
  this.q=q;
  new Thread(this, "Consumer").start();
  }

  public void run()
  {
    while(true)
    {
    q.get();
    }
  }
}

class PCFixed {
  public static void main(String[] args) {
  Q q= new Q();
  new Producer(q);
  new Consumer(q);

  System.out.println("Drücken Sie STRG+C, um zu stoppen.");
  }
}

Wie gesagt geht das auch mit void und ohne return wunderbar.

Erkennt ihr einen Nutzen daraus?

Liebe Grüße
Reality
 
Natürlich geht das Wunderbar, da die int var nur in Q verwendet wird.
Nützlich wirds wenn du den consumer umbaust, ungefähr so:
Code:
...
    while(true)
    {
    int i = q.get();
    //do something very, very usefull with [b]i[/b]
    }
...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben