Non hai assolutamente sfruttato l'ereditarietà che in questo caso sarebbe stata moooolto utile.
Avresti potuto fare una classe "Frutto" come classe padre e quindi scrivere :

codice:
public class Arancia extends Frutto implements Runnable...
//e ancora
public class Limone extends Frutto implements Runnable...
//e così via
Il runnable perché usi thread.

Stessa cosa per le classi pioggia...

Ciao.