Answer: Now, now. There, there. Let's take away the Thread and make it nice and simple and see if you get it now. But look!!! The "interface" is empty! What is this? Now the purpose of the interface should be clear - to force the service provider to be of a particular kind so we can be sure the proper service is provided!!!

class AServicer {
   int number;
   AServicer (int number) { this.number = number-2; }

   public int service() {  return number+=2; }
}

interface SomeServiceListener { }

class SomeServiceProvider {
   int number; SomeServiceListener listener;

   public SomeServiceProvider () { number = 0; }

   public void addSomeListener(SomeServiceListener listener) { 
      this.listener = listener; 
   }

   public int service () { return number++; }
}

class A extends AServicer implements SomeServiceListener {
   SomeServiceProvider service;

   A (int a) { 
      super(a);
      service = new SomeServiceProvider();
      service.addSomeListener(this);
      for (int i=0 ; i < 5 ; i++) 
	 System.out.print("["+service.service()+":"+service()+"] ");
      System.out.println();
   }
}

public class MultipleInheritance {
   public static void main (String arg[]) {
      A a = new A(10);
   }
}