JVM 1.1 JSE API-, API, , .
, , (?), , . , , , .
-
: API, , . JVM.
Method, , :
static private final java.lang.reflect.Method SET_ACCELERATION_PRIORITY;
static {
java.lang.reflect.Method mth=null;
try { mth=java.awt.Image.class.getMethod("setAccelerationPriority",new Class[]{Float.TYPE}); } catch(Throwable thr) { mth=null; }
SET_ACCELERATION_PRIORITY=mth;
}
:
static public void setImageAcceleration(Image img, int accpty) {
if(accpty>0 && SET_ACCELERATION_PRIORITY!=null) {
try { SET_ACCELERATION_PRIORITY.invoke(img,new Object[]{new Float(accpty)}); }
catch(Throwable thr) { throw new RuntimeException(thr); }
}
}
Harder - Static Wrapper
: API, , API , . JVM.
-; , . :
package xxx;
import java.io.*;
import java.util.*;
public class SysUtil
extends Object
{
SysUtil() {
super();
}
int availableProcessors() {
return 1;
}
long milliTick() {
return System.currentTimeMillis();
}
long nanoTick() {
return (System.currentTimeMillis()*1000000L);
}
static private final SysUtil INSTANCE;
static {
SysUtil instance=null;
try { instance=(SysUtil)Class.forName("xxx.SysUtil_J5").newInstance(); }
catch(Throwable thr) { instance=new SysUtil(); }
INSTANCE=instance;
}
static public int getAvailableProcessors() {
return INSTANCE.availableProcessors();
}
static public long getMilliTick() {
return INSTANCE.milliTick();
}
static public long getNanoTick() {
return INSTANCE.nanoTick();
}
}
, :
package xxx;
import java.util.*;
class SysUtil_J5
extends SysUtil
{
private final Runtime runtime;
SysUtil_J5() {
super();
runtime=Runtime.getRuntime();
}
int availableProcessors() {
return runtime.availableProcessors();
}
long milliTick() {
return (System.nanoTime()/1000000);
}
long nanoTick() {
return System.nanoTime();
}
}