abstractでextendsしたクラスへのコールバック?と、interfaceを使ったコールバックだとabstractの方が早い。
Core-i5で5倍ほど差が出た。
多分Android上だともっと差がでるんだろうかな。
多分Android上だともっと差がでるんだろうかな。
・AbstractThread.java
public abstract class AbstractThread extends Thread implements Runnable {
abstract public void run();
}
・CallbackThread.java
public class CallbackThread extends Thread implements Runnable {
public interface CallBack {
void onCallback(int value);
}
private CallBack lis;
void setCallBack(CallBack listener) {
this.lis = listener;
}
@Override
public void run() {
long startTime = System.nanoTime();
for (int i = 0; i < Main.LOOP; i++) {
if (lis != null) {
lis.onCallback(i);
}
}
long procTime = System.nanoTime() - startTime;
System.out.println("Callback:" + procTime / Main.LOOP + "[ns]");
}
}
・Main.java public class Main {
public static void main(String[] args) {
CallbackThread thread = new CallbackThread();
CallbackThread.CallBack call = new CallBack() {
@Override
public void onCallback(int value) {
// System.out.println(value);
}
};
thread.setCallBack(call);
thread.start();
AbstractThread athread = new AbstractThread() {
@Override
public void run() {
long startTime = System.nanoTime();
for (int i = 0; i < LOOP; i++) {
// System.out.println(i);
}
long procTime = System.nanoTime() - startTime;
System.out.println("Abstract:" + procTime / LOOP + "[ns]");
}
};
athread.start();
}
}