Kamis, 08 Oktober 2015

Java Thread with Listener

Dalam sebuah pemrograman java biasa nya kita menemui kebutuhan suatu process dalam Thread. Berikut cara membuat sebuah Thread untuk dummy process sebagai contoh dengan pengembalian event message dari thread tersebut menggunakan event listener

1. Buat sebuah class event dari turunan class java.util.EventObject

 public class ProcessEvent extends java.util.EventObject {  
   private Object data;  
   public ProcessEvent(Object o)  
   {  
     super( o );  
   }  
   public ProcessEvent(Object o, Object data)  
   {  
     super( o );  
     this.data = data;  
   }  
   public Object getData() {  
       return data;  
   }  
 }  


2. Buat sebuah interface listener dari turunan class java.util.EventListener

 public interface ProcessEventListener extends java.util.EventListener {  
   public void onDataCapture(ProcessEvent event);  
 }  

3. Buat sebuah class thread dari turunan class Thread

 public class ProcessThread extends Thread {  
   private List<ProcessEventListener> listeners = new ArrayList<ProcessEventListener>();  
   private boolean running = true;  
   public ProcessThread(){      
   }  
   public void run(){  
     while(running){  
       readData();  
     }      
   }  
   public synchronized void close(){  
     running = false;  
   }  
   public void addIPCameraListener(ProcessEventListener listener )  
   {  
     listeners.add(listener);  
   }  
   public void removeIPCameraListener(ProcessEventListener listener )   
   {  
        if(listener==null) listeners.clear();  
        else listeners.remove( listener );  
   }  
   private void onDataCapture(ProcessEvent event)    
   {    
        for(ProcessEventListener listener : listeners)  
        {  
             listener.onDataCapture(event);  
     }  
   }  
   private void readData(){  
     try{  
       onDataCapture(new ProcessEvent(this,"Message from Thread"));  
       Thread.sleep(1000);  
     }catch(Exception e){e.printStackTrace();}  
   }  
 }  

4. Buat sebuah main class sebegai berikut

 public class JavaSample {  
   /**  
    * @param args the command line arguments  
    */  
   public static void main(String[] args) {  
     ProcessThread process = new ProcessThread();  
     process.addIPCameraListener(new ProcessEventListener(){  
       @Override  
       public void onDataCapture(ProcessEvent event) {  
         String msg = (String) event.getData();  
         System.out.println(msg);  
       }        
     });  
     process.start();  
   }    
 }  

Berikut hasil output dari main class diatas

 run:  
 Message from Thread  
 Message from Thread  
 Message from Thread  
 Message from Thread  
 Message from Thread  
 Message from Thread  
 Message from Thread  
 Message from Thread  
 Message from Thread  
 Message from Thread  
 Message from Thread  

Silahkan mencoba, Thx

Tidak ada komentar:

Posting Komentar