Example #1
0
 @StubMethod
 public void start0(final ThreadMirror threadMirror) {
   ClassMirror threadClass = getVM().findBootstrapClassMirror(Thread.class.getName());
   final MethodMirror runMethod;
   final MethodMirror exitMethod;
   try {
     runMethod = threadClass.getDeclaredMethod("run");
     exitMethod = threadClass.getDeclaredMethod("exit");
   } catch (NoSuchMethodException e) {
     throw new RuntimeException(e);
   }
   Thread thread =
       new Thread("Holographic thread (" + Reflection.getThreadName(threadMirror) + ")") {
         @Override
         public void run() {
           try {
             try {
               runMethod.invoke(threadMirror, threadMirror);
               exitMethod.invoke(threadMirror, threadMirror);
             } catch (MirrorInvocationTargetException e) {
               throw new RuntimeException(e);
             } catch (IllegalAccessException e) {
               throw new RuntimeException(e);
             }
           } finally {
             getVM().threadExited(threadMirror);
           }
         }
       };
   thread.start();
   getVM().threadStarted(threadMirror);
 }