www.fatihkabakci.com

Personal Website and Computer Science TUR EN

JAVA TIMER ve TIMERTASK

Last update: 10/3/2014 6:32:00 PM

Yazan:Fatih KABAKCI

Bazen yazdığınız programları farklı görevlere(task) ayırarak, her bir görevin belirli bir zamanda çalışmasını isteyebilirsiniz. Bunun için Java Timer ve TimerTask sınıflarını sunmaktadır. java.util.Timer nesnelerini kullanarak, oluşturduğunuz java.util.TimerTask ile görevlerinizi yönetebilirsiniz.

TimerTask Sınıfı

TimerTask sınıfının genel yapısı aşağıda verilmektedir.
public abstract class TimerTask extends Object implements Runnable

Soyut bir sınıf olan TimerTask Runnable arabirimi uygular ve dolayısı ile aslında bir Java Thread olarak çalışır. Bundan dolayı run() metodunu override ederek, gerçekleştirmek istediğiniz task kodunu, bu metoda yazmalısınız.

TimerTask sınıfının diğer metotları arasında;

  • cancel()
  • scheduledExecutionTime()
mevcut taskın işi bittiği zaman sonlandıran cancel() ve taskın ne zaman çalıştırılacağı bilgisini bulunduran scheduledExecutionTime() metotları yer alır.

Timer Sınıfı

Timer sınıfı somut olup, doğrudan örneklendirilebilen bir sınıftır. Genel tanım aralığı aşağıda verilmektedir.
public class Timer extends Object

Genel olarak en önemli metotları schedule() 'dir. Bu metodun hem long tipinde, hem de bu değerlerin Date karşılıkları tipinde overload edilmiş metotları bulunur. Aralarındaki farklar zamanlayıcının ilgili taskı, ne zaman ve hangi aralıklarda çalıştırılması ile ilgilidir. Zaman değerleri milisaniye cinsinden tanımlanır.

Şimdi bu sınıfların somut olarak kullanıldığı örneklerini inceleyelim.

Aşağıda basitçe Java Programlama Dilindeki bir görev zamanlayıcısının nasıl oluşturulduğu gösterilmektedir.

TimerTask

package TimerTask;

import java.util.TimerTask;

/**
 * 
 * @author www.fatihkabakci.com
 * @summary The class TimerTask
 *
 */
public class CounterTimerTask extends TimerTask {

   static int data;
   
   public CounterTimerTask() {
      data = 0;
   }
   @Override
   public void run() {
      System.out.println("Data=" + (++data));
   }
}
Java Programlama Dilinde bir zamanlayıcı görev oluşturmak istediğiniz zaman, yukarıdaki örnekte görüldüğü gibi soyut TimerTask sınıfını extend etmeniz gerekmektedir.

Yukarıdaki CounterTimerTask adındaki Thread sınıfı her çalıştırıldığında, içinde bulunan static data değişkenini 1 arttırır.

Şimdi ise yukarıda tanımlanan CounterTimerTask sınıfını belirli bir zamanda çalıştırılmaya ayarlayan Timer nesnesi üretilmelidir. Timer sınıfı somut bir sınıftır ve doğrudan örneklendirilebilmektedir.

Örnek 1 - SimpleTimerTask

Aşağıdaki ilk örnekte basitçe bir Timer nesnesi program başlarken çalıştırılır. CounterTimerTask sınıfından oluşturulan task nesnesi, 500 ms de bir tekrar tekrar çalıştırılır. Ta ki Ana Kanal(Main Thread) 2 saniye içinde sonlanana kadar !. Program sonunda ise zamanlanan task cancel edilerek sonlandırılır. Bu metot çağrılmaz ise, programınız bir süre askıda kalabilir ve önerilmez.
package TimerTask;

import java.util.Timer;
import java.util.TimerTask;

/**
 * 
 * @author www.fatihkabakci.com
 *
 */
public class SimpleTimerTask {

   public static void main(String[] args) {
     
      TimerTask task = new CounterTimerTask();
      Timer timer = new Timer();
      
      timer.schedule(task, 0, 500);
      try {
         Thread.sleep(2000);
      }
      catch (InterruptedException e) {
         e.printStackTrace();
      }
      timer.cancel();
   }
}

Örnek 2 - Deamon Timer

Timer sınıfının kurucu metotlarından bir tanesi de, zamanlayıcı nesnenin deamon thread olduğunu, yani Ana Kanalın(Main Thread) çalışma süresi boyunca ayakta kalacağını belirtmesidir. Bir Timer şayet bir deamon thread ise, cancel() ile bitirilmek zorunda kalmaz. Aşağıda basit bir örnek gösterilmiştir.
package TimerTask;

import java.util.Timer;
import java.util.TimerTask;

/**
 * 
 * @author www.fatihkabakci.com
 *
 */
public class DeamonTimerTask {

   public static void main(String[] args) {
     
      TimerTask task = new CounterTimerTask();
      Timer timer = new Timer(true); // deamon timer
      
      timer.schedule(task, 0, 500); // cancelled automatically when the main program finishes
      try {
         Thread.sleep(2000);
      }
      catch (InterruptedException e) {
         e.printStackTrace();
      }
   }
}

Örnek 3 - Gelecekten Bir Görev

TimerTask'ın Date sınıfları ile birlikte kullanıldığı daha anlamlı olan aşağıdaki örnekte ise, program başladıktan 5 saniye sonra belirtilen görevin çalıştırdığı gösterilmektedir.
/**
 * 
 */
package TimerTask;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/**
 * @author www.fatihkabakci.com
 * @summary The task runs 5 seconds later.
 *
 */
public class FutureTimerTask {

   public static void main(String[] args) {
      
      Calendar calendar = Calendar.getInstance();
      
      int second = calendar.get(Calendar.SECOND);
      System.out.println("Now The seconds:" + second);
      calendar.set(Calendar.SECOND, second + 5); // sets 5 seconds future
      
      Date time = calendar.getTime();
      
      Timer scheduler = new Timer();
      TimerTask myTask = new CounterTimerTask();
      System.out.println("It will be run in 5 seconds:");
      System.out.println("Start Seconds:" + (second + 5));
      scheduler.schedule(myTask, time); // called the method run() in 5 seconds
      try {
         Thread.sleep(5000);
      }
      catch (InterruptedException e) {
         e.printStackTrace();
      }
      scheduler.cancel();
      System.out.println("The task has been run sucessfully");
   }
}
Özet olarak Java Programlama Dilinde Timer & TimerTask sınıflarını kullanarak istediğiniz bir zaman diliminde görevlerinizi tanımlayabilir ve bu görevleri çalıştırabilirsiniz.
There has been no comment yet

Name:


Question/Comment
   Please verify the image




The Topics in Computer Science

Search this site for





 

Software & Algorithms

icon

In mathematics and computer science, an algorithm is a step-by-step procedure for calculations. Algorithms are used for calculation, data processing, and automated reasoning.

Programming Languages

icon

A programming language is a formal constructed language designed to communicate instructions to a machine, particularly a computer. It can be used to create programs to control the behavior of a machine. Java,C, C++,C#

Database

icon

A database is an organized collection of data. The data are typically organized to model aspects of reality in a way that supports processes requiring information.

Hardware

icon

Computer hardware is the collection of physical elements that constitutes a computer system. Computer hardware refers to the physical parts or components of a computer such as the monitor, memory, cpu.

Web Technologies

icon

Web development is a broad term for the work involved in developing a web site for the Internet or an intranet. Html,Css,JavaScript,ASP.Net,PHP are one of the most popular technologies. J2EE,Spring Boot, Servlet, JSP,JSF, ASP

Mobile Technologies

icon

Mobile application development is the process by which application software is developed for low-power handheld devices, such as personal digital assistants, enterprise digital assistants or mobile phones. J2ME

Network

icon

A computer network or data network is a telecommunications network that allows computers to exchange data. In computer networks, networked computing devices pass data to each other along data connections.

Operating Systems

icon

An operating system is software that manages computer hardware and software resources and provides common services for computer programs. The OS is an essential component of the system software in a computer system. Linux,Windows

Computer Science

icon

Computer science is the scientific and practical approach to computation and its applications.A computer scientist specializes in the theory of computation and the design of computational systems.