This is a simple callback function, Receive calls the Timer class, Time generation method show the current time Receive callback class printed.
1. callback interface CallBack class
package Call; @FunctionalInterface public interface CallBack<T> { void cBack(T t); }
2. Tools Timer
package Time; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.List; import Call.CallBack; public class Timer extends Thread{ public List<CallBack<LocalDateTime>> callList = new ArrayList<CallBack<LocalDateTime>>(); @Override public void run() { try { while(true) { doRun(); sleep(1000); } } catch (Exception e) { e.printStackTrace(); } } private void doRun() { for(CallBack<LocalDateTime> c : callList) { c.cBack(LocalDateTime.now()); } } }
3. Receive callback class
package Demo; import java.time.LocalDateTime; import java.time.LocalTime; import Call.CallBack; import Time.Timer; public class Receive { public Timer timer; public Receive(){ timer = new Timer(); timer.callList.add(new CallBack<LocalDateTime>() { @Override public void cBack(LocalDateTime t) { show(t); } }); } protected voidShow (the LocalDateTime T) { System.out.println ( "Current time is:" + T); } public static void main (String [] args) { new new the Receive () timer.start ();. } }