www.fatihkabakci.com

Personal Website and Computer Science TUR EN

JAVA THREAD OLUSUMU

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

Yazan:Fatih KABAKCI

Programcılık dünyasına iki yaklaşım getiren Thread programlama CPU kullanım oranını(utilization) arttırmak,CPU'u boş durumda bırakmamak(iddle) amacıyla geliştirilmiştir.Bu yaklasimlardan ilki farkli iki programi senkron calistirmaktir.Ikinci yaklasim ise ayni program icerisindeki farkli iki islevi senkron calistirmaktir.Temel amac cpu verimliliğini arttirmak olan bu yöntemlerde,programlar daha estetik bir yaklaşım haline gelmeye başlamıştır.Java programlama dilinde Thread oluşturmanın iki yolu mevcuttur.
  1. Runnable arabirimini uygulayarak
  2. Thread sınıfını genişleterek
Burada her iki yöntemde anlatılacaktır.

Runnable Arabirimi ile

Ilk olarak Runnable arabirimini uygulayan bir sınıf,sadece run() metodunu devre dışı bırakmak zorundadır(override).Runnable arabirimi implementasyonu,şayet bir sınıf geliştirmek için kullanılmayacaksa genelde daha sık kullanılan bir yöntemdir.Bu yöntemde,tanımlanan sınıf basitçe implementation anahtar sözcüğü ile Runnable'ı uygular.Burada hatırlanması gereken void run() metodunun devre dışı bırakılması olacaktır.

void run() metodu,bir kanalın asıl işlevini yapan ve onu çalıştıran bir metottur.void start() metodu ise,run() metoduna çağrıda bulunan ve kanal çalışması öncesinde işlemleri başlatmakla yükümlüdür.Tüm bu anlatılanlar aşağıdaki örnek program ile gösterilmektedir.




Yukarıdaki programda ana kanal her 1 saniyede askıya alınarak,com.fatihkabakci adlı child kanal çalıştırılmaktadır.Bu kanalda her yarım saniyede bir askıya alınmaktadır.Genel itibariyle bir java programı sona erdiğinde en son sona eren kanal ana kanal olmalıdır.Aksi takdirde bazı işletim sistemlerinde Java çalışma sistemi sonlandırılabilmektedir.

Thread Sınıfını Genişleterek

Java programlama dilinde bir kanal oluşturmanın diğer yoluda,mevcut Standart Java içerisinde tanımlanmış Thread sınıfını genişletmektir.Bunun bir arabirim uygulamasından farklı olması;
  1. Bir sınıf kullanarak iş yapılması
  2. Gelecek dönemler için kurgulanacak yeni alt Thread sınıflarının geliştirilmesi
amaçlarından ileri gelmektedir.Bu yöntemde tanımlanan bir sınıf Thread sınıfını miras almaktadır.Aynı şekilde run() metoduna çağrı yaparak gerçekleştirmek istediği uygular.




Sonuç olarak uygulanan yöntem her ne olursa olsun,yukarıdaki aynı iki programda da amaç CPU kullanım oranını arttırmaktır.Aynı programda çalışan farklı thread'lerin CPU'u paylaşımlı kullanarak kendi kanallarındaki işleri başarmaktadırlar.Yukarıdaki kodlar farklı CPU üzerlerinde koşulduklarında askıda kalma süreleri altında yaptıkları işlerin hızı değişebilir.Örneğin her 1 saniye altında yarım saniye askıya alınan child thread 2 iş yerine 3 iş hatta daha fazla iş de yapabilir(Bu programa göre yapılan iş döngüyü basitçe bir arttırmaktır).

Daha Fazla Sayıda Kanal

Java programlama dilinde Thread kullanımını incelemeye 2'den fazla kanal ile devam edelim.Aşağıdaki örnekte ise ekrana farklı Thread'ler tarafından KABAKCI string'i yazılacaktır.Bu iş için 3 thread görevlendirilmiştir.Her thread CPU'u farklı zaman dilimlerinde paylaşımlı kullanarak,KABAKCI kelimesinin harflerinden kendilerine verilen kadarıyla bastıracaktır.

KABAKCI kelimesinden birinci,dördüncü ve sonuncu harfleri olan K,A ve I harfleri ilk Thread için verilmiştir.

KABAKCI kelimesinden ikinci ve beşinci harfler olan A,K ikinci Thread için verilirken,

üçüncü ve altıncı harfler olan B,C üçüncü Thread için verilmiştir.

Burada yapılmak istenen,
  1. İlk Thread K harfini basar ve 1300 ms askıya alınır.
  2. İkinci Thread kendisinin ilk harfi olan A harfini basar ve 1500 ms askıda kalır.
  3. Üçüncü Thread ise bu süre zarfında yine kendisinin ilk harfi olan B harfini basar ve 2000 ms askıda kalır.
  4. Çark yeniden ilk thread'e geçer ve kendisinin ikinci harfi olan A'yı basar.
  5. 1500 ms bu sırada geçmiş olan ikinci Thread uyanır ve kendisinin son harfi olan K'yı basar.
  6. 2000 ms sonunda yeniden uyanan üçüncü thread son harfi olan C'yi basar ve görevini tamamlar.
  7. Son olarak sırayı yeniden alan ilk Thread son harfi olan I'yı basarak monitörü terkeder.
Yukarıdaki bu sıra bu programın yazıldığı işlemcinizin yüküne ve hızına göre değişebilir.Bunun için belirtilen uyuma sürelerini değiştirmek zorunda kalabilirsiniz.

Yukarıda anlatılan bu senaryonun javada oluşumu ise aşağıda verilmektedir.


İşlemcinizin programın çalıştığı zamandaki yoğunluğuna göre farklı çıktılar alabilsenizde genel olarak aynı çıktı ekranda oluşacaktır.


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,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.