Может и не в тему (сам я ни один фильм про звёздные войны не видел), но про Йоду:
==========================================================================
* From: "Aleksej R Serdyukov" <Aleksej R
Serdyukov@f24000.n5020.z2.fidonet.org>
* Date: 06 Jun 05 21:18:12
* To: All
* Subj: [FWD] [Java] The real story about how Anakin Skywalker became Darth Vad
==========================================================================
Subject: [FWD] [Java] The real story about how Anakin Skywalker became Darth Vad
============================================================================
* Переслал Aleksej R. Serdyukov (2:5020/24000)
* Обл. : XSU.HACKER (XSU.HACKER)
* От : Ilya V. Vasilyev, 2:5020/400 (06 Jun 05 21:56)
* Кому : All
* Тема : [Java] The real story about how Anakin Skywalker became Darth Vader
============================================================================
Hi, All!
Hикто Жабу не изучает?
http://weblogs.java.net/blog/kirillcool ... story.html
=== ===
Here it is - the JDK 5.0-compliant story behind "Revenge of the Sith". See
it in all its glory, using the new java.util.concurrency package:
=== ===
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 Set<Child> call() {
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<Child>();
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<JediKnight>();
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
}
}
=== ===
Bye,
Ilya V. Vasilyev
-+- ifmail v.2.15dev5.3
+ Origin: FidoNet Online -
http://www.fido-online.com (2:5020/400)
============================================================================
Hi, All!
mu'o
http://parodise.geekworld.dk/ - song parodies in different languages.
--- GoldED+/W32 1.1.5-040120
* Origin: Delete Software Limited, Moscow, Russia. (2:5020/24000)
==========================================================================