Aquí va uno muy bueno, pero necesitareis una conexión a internet.
Ejecutad esto desde la consola (Inicio -> Ejecutar : "cmd"):
telnet towel.blinkenlights.nl
En esta experiencia suprageek os recomiendo unas buenas palomitas...
Si alguno no entiende bien la pelicula... aquí va un pequeño resumen:
public class Princess implements ExecutorService {
public static final Princess PADME = new Princess();
// private member
private StarShip ship;
private Princess() {
this.setDefaultLocale(Locale.EN);
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
Princess.this.changeHairStyle();
Princess.this.changeClothes();
}
};
timer.scheduleAtFixedRate(task, new Date(), 1000);
}
}
public class JediKnight implements ExecutorService {
public static final JediKnight ANAKIN = new JediKnight(false);
public static final JediKnight OBI_WAN = new JediKnight(false);
public static final JediKnight YODA = new JediKnight(true);
private JediKnight(boolean isYoda) {
if (!isYoda) {
this.setDefaultLocale(Locale.EN);
}
else {
Locale yodaLocale = Locale.EN;
this.setDefaultLocale(Utils.shuffle(yodaLocale));
}
this.setLightSabre(LightSabreFactory.getInstance());
this.setGoodLooking(!isYoda);
}
}
public class Sith {
public static final Sith LORD = new Sith();
private Sith() {
this.setDefaultLocale(Locale.EN);
this.setClothes(DarkRobeFactory.getInstance());
this.setLightSabre(LightSabreFactory.getInstance());
}
}
public static main() {
// The following line has been commented out so as not
// to confuse fans who never did it
// Utils.initChildren(JediKnight.ANAKIN, Princess.PADME);
// Use JDK 5.0 concurrency package
Future(Set(Child)) padmeFuture = Princess.PADME.submit(
new Callable(Set(Child))() {
public Setcall() {
try {
int weeks = (int)(36+4.0*Math.random());
wait(weeks*7*24*60*60*1000);
this = null;
System.gc();
}
finally() {
Child boy = new Child("Luke");
Child girl = new Child("Leia");
Set(Child) result = new HashSet();
result.add(boy);
result.add(girl);
return result;
}
}
}
);
if (JediKnight.ANAKIN.poll(padmeFuture) instanceof ThreadDeath) {
JediKnight.ANAKIN.alarm();
// use some marketing ideas
Sith.LORD.promise(JediKnight.ANAKIN, new RuntimePermission("object.restore.afterGC"));
Sith.LORD.promise(JediKnight.ANAKIN, new RuntimePermission("force.power.dark.*"));
Sith.LORD.promise(JediKnight.ANAKIN, new RuntimePermission("force.power.*"));
Sith.LORD.promise(JediKnight.ANAKIN, new RuntimePermission("force.*"));
JediKnight.ANAKIN.setInternalName("Darth Vader");
JediKnight.ANAKIN.promise(Princess.PADME, new RuntimePermission("*"));
Princess.PADME.alarm();
Princess.PADME.boardShip();
// Use JDK 5.0 concurrency package
Future(StarShip) anakinFuture =
JediKnight.OBI_WAN.submit(
new Callable(StarShip)() {
public RuntimePermission call() {
try {
Class princessClass = Princess.getClass();
Field shipField = princessClass.getDeclaredField("ship");
// will never throw SecurityException on Jedi Knight
shipField.setAccessible(true);
JediKnight.this.add(new RuntimePermission("object.ship.board.*"));
return (StarShip)shipField.get(Princess.PADME);
}
catch (SecurityException se) {
// never supposed to happen to Jedi Knight
System.out.println("Internal error. Contact George Lucas.");
System.reboot();
}
}
}
);
StarShip padmeShip = anakinFuture.call();
padmeShip.put(JediKnight.OBI_WAN);
JediKnight.ANAKIN.see(Princess.PADME);
Princess.PADME.removeLove(JediKnight.ANAKIN);
JediKnight.ANAKIN.see(JediKnight.OBI_WAN);
JediKnight.ANAKIN.removeLove(Princess.PADME);
JediKnight.OBI_WAN.removeLimbs(JediKnight.ANAKIN);
// note - absolutely no need for GC, Anakin will be collected automatically.
ReferenceQueue(JediKnight) sithWatchList = new ReferenceQueue();
PhantomReference(JediKnight) anakinRef = sithWatchList.remove();
JediKnight anakinPhantom = anakinRef.get();
Sith DARTH_VADER = Sith.LORD.assemble(anakinPhantom, LimbFactory.getSpareInstances());
MouthPiece newMouthPiece = MouthPieceFactory.getInstance();
// no need to check that it works - guaranteed to work with no noise
DARTH_VADER.add(newMouthPiece);
DARTH_VADER.rise();
}
else {
// TODO - create alternative scenario for Sith revenge
}
}
No hay comentarios:
Publicar un comentario