Thread programlamada iş parçacığı anlamına gelen bir kavram. Bir programın içerisinde aynı anda yapılması gereken birden fazla iş olduğu zaman Thread kullanmak artık Allah'ın emri olur. Mesela bir örnek verelim: Bir sohbet programı düşünün, msn, gtalk, skype, ya da her ne haltsa. Bu programda iki temel işlem vardır aynı anda yürüyen. Aslında onlarca farklı işlem vardır da iki tanesi çok önemlidir:

1) Kullanıcının birşey yazıp göndermesini beklemek
2) Karşıdaki diğer kullanıcının birşey gönderip göndermediğini dinlemek

Bu iki işi bilgisayarın aynı anda yapması gerekir. Yoksa bizim anlık ileti programı olarak kullandığımız programlar "anlık" ifadesini kaybeder.

Aslında bir işlemcide iki iş aynı anda yürümez. Bunu bilgisayar bilen birçok kişi bilir. İşlemci, işleri parçalara böler, biraz birisinden, biraz birisinden yapar. Ama işlemler arası atlamaları çok hızlı ve kısa sürede yaptığı için biz aciz kullanıcılara işlemler aynı anda yapılıyor izlenimi verir. Thread'ler de böyledir. Yukarıda verdiğim örnekte, işlemci çok hızlı bir şekilde biraz kendi kullanıcısını, biraz da karşıdaki kullanıcıyı dinler.

Sleep Methodu?
Sleep methodu sayesinde bir Thread'i belirli bir zaman bekletebiliyoruz. Böylelikle işlemci o süre içerisinde o Thread'i işlemeyi bırakıyor ve başka işlemler ile uğraşıyor. Bu daha çok zamanlamalı programlarda/oyunlarda kullanılıyor sanırsam, yani ben öyle yapıyorum. Örneğin bir programımız var ve bu program normal bir şekilde işlerken biz sağ üst köşesinde falan dijital bir saat göstermek istiyoruz. O zaman oraya eklediğimiz dijital saat arayüzünün her 1000 milisaniyede(1 saniye) bir yenilenmesi gerekiyor ki zaman sürekli ilerlesin.

Saati her saniye saat:dakika:saniye şeklinde konsola yazdıran basit bir java uygulaması görmek için aşağıdaki linki takip edin:
http://pastebin.com/6V6f8MSV

Şimdi bunu Thread kullanmadan da yazarım diyenler vardır mutlaka. Yazarsınız tabi, ehe. Yukarıdaki örnek kodda ben tek Thread kullandım çünkü amacım orada sleep komutunu göstermekti. O saati Thread içerisinde arttırıp ekrana yazdırdık değil mi? Peki niye? Çünkü eğer biz main fonksiyonunun içerisinde başka işlemler yapıyor olsaydık, bu işlemleri yapmak için Thread'in bitmesini beklemek zorunda kalmayacaktık. Hepsi eş zamanlı olarak yürütülecekti. Bu arada Thread de sonsuz döngü içerdiği için bitmiyor zaten, hehe.

Şimdi işleri komplikeleştirmek için az önceki saat uygulamamızda ikinci bir Thread açalım ve o da her 3 saniyede bir ekrana "Sedran - blog.asosyalbebe.com" tarzı birşey yazsın. Çift Thread ile çalıştığımız zaman hem her saniye ekrana saatin yazıldığını, hem de her 3 saniyede bir ekrana diğer şeyin yazıldığını göreceksiniz. Görelim, kodumuz aşağıda:
http://pastebin.com/sWTpxDfm

Bu programı bir süre çalıştırdığımızda ekranda şunların yazdığını görüyoruz:

00:00:01
00:00:02
Sedran - blog.asosyalbebe.com
00:00:03
00:00:04
00:00:05
Sedran - blog.asosyalbebe.com
00:00:06
00:00:07
00:00:08
Sedran - blog.asosyalbebe.com
00:00:09
00:00:10
00:00:11
Sedran - blog.asosyalbebe.com
00:00:12

Bu da bu iki işlemin birbirini beklemediğini, sadece bizim onlara bekle dediğimiz zamanı beklediklerini gösteriyor.

Şimdilik bu kadar. Thread'ler ile ilgili incelemelerim devam edecek. Beni bırakmayın.

Hiç yorum yok