import javax.realtime.OneShotTimer; import javax.realtime.RealtimeThread; import javax.realtime.VTMemory; import javax.realtime.RelativeTime; public class DemoPinningTimer extends RealtimeThread { public static void main(String [] args){ DemoPinningTimer test = new DemoPinningTimer(); test.start(); try { test.join(); } catch (InterruptedException e) { // Do nothing } } public void run(){ final VTMemory sma = new VTMemory(32*1024); sma.enter(new Runnable(){ public void run(){ OneShotTimer timer = new OneShotTimer(new RelativeTime(Long.MAX_VALUE, 0), null); sma.setPortal(timer); timer.start(); new Object() { public void finalize(){ System.out.println("Finalizing an object in the scope."); } }; } }); System.out.println("Ref count with scope pinned is " + sma.getReferenceCount()); sma.enter(new Runnable(){ public void run(){ OneShotTimer timer = (OneShotTimer)sma.getPortal(); System.out.println("Unpinning"); timer.destroy(); } }); System.out.println("Ref count after unpin is " + sma.getReferenceCount()); } }