Java Threads Dr.Galip AYDIN.

Slides:



Advertisements
Benzer bir sunumlar
Programlama-II (Java ile Bilgisayar Programlama)
Advertisements

Java Programlama Giriş/Çıkış
Saatte V km hız ile giden bir aracın t zamanda aldığı yolu bulan metodu yazınız. Metodu kullanacak bir program yazınız. ( yol=hız*zaman, x=V*t) — Metot.
JAVA TEMELLERİ GİRİŞ JAVA TEMELLERİ GİRİŞ signalsec.com & mialkan.com.
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Değişkenler ve bellek Değişkenler
Java Uygulamaları Konsol Uygulaması.
Programlama-II (Java ile Bilgisayar Programlama)
Miras Alma EM-406 Java.
Bölüm 6 – Metodlar ve Parametreler
Bölüm 4 – Kontrol İfadeleri:1.kısım
OOP UYGULAMA 5.
EDUTIME Java Day 4 Serdar TÜRKEL.
Metodlar ve Parametreler
Bölüm 7 - Diziler İçerik 7.1 Giriş 7.2 Diziler 7.3 Dizileri Tanımlama 7.4 Dizileri Kullanan Örnekler 7.5 Referanslar ve Referans Parametreler.
P p 8. Ünitede yinelemeli programlamanın teknikleri anlatılmaktadır. p p Gördüğünüz gibi, yinelemeli programlama bir problemin içinde problemin küçük parçalarını.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Karar ifadeleri ve Döngüler
EDUTIME Java Day 3 Serdar TÜRKEL.
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
Sınıfların Tekrardan Kullanılması
Java Programlama Koleksiyon(Collection) Sınıfları
Nesneye Yönelik Programlama Dr. Pelin GÖRGEL
DİZİLER.
P 2. Ünitede Nesneye Dayalı Programlama anlatılıyor. p Nesneye dayalı programlama yeni veri tiplerinin ve bu tipleri işletmek için gereken işlemleri oluşturmayı.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar
C# Metot Overloading (Aşırı yükleme)
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
JAVADA PROGRAM DENET İ M İ VE OPERATÖRLER. int a ; a=4 ; // do ğ ru bir atama 4=a ; // yanlış bir atama!
NESNEYE DAYALI PROGRAMLAMA
JAVA İ LE PROGRAMLAMAYA G İ R İ Ş Ekim Dr. Galip Aydın.
İş Parçacıkları Thread(s)
Java Sınıf ve Nesne Kavramı UML Gösterimi
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
JAVA İLE PROGRAMLAMAYA GİRİŞ
© Haluk Bingöl v2.23 Java Programlama Dili - 01 Tek Class ile Programlama Dr. Haluk Bingöl BÜ - CmpE BU-SWE.
ÇOK BİÇİMLİLİK POLYMORPHISM
APPLET KAVRAMI ve GRAFİK UYGULAMALARI
Önceki Dersi Hatırlama !!
Çoklu dallanma seçimi: switch
Kalıtım.
EDUTIME Java Day 8 Serdar TÜRKEL.
Numaralandırmalar(Enumaration)
ETKİLEŞİMLİ TÜRKİYE APPLETİ
DÖNGÜLER.
Class KahveFincani { public KahveFincani() { System.out.println("KahveFincani..."); } } public class YapilandirciBasitOrnek { public static void main(String[]
JAVA’DA DİZİLER Dr.Galip AYDIN.
Sınıflar ve Nesneler Sınıf: bir nesnenin şablonunu, kalıbını, şeklini, davranışını, kalıtımını değişkenleri, metodları ve ebeveynleri vasıtasıyla tanımlar.
Trees, Vectors, Iterators. ADT Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri - Uygulamaları.
Ders İçeriği Liste Soyut veri yapısı (ADT)
Bölüm 5 Nesneler ve Metotlar
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
String class String karakterler dizisidir
Hata Ayıklama (Debugging), Arayüzler (Interfaces), Polimorfizm.
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
JAVA PROGRAMLAMA ORNEKLER
Java.lang.math
ODTU-SEM Copyright (c) 2011 Kalıtım(Inheritance) Subclass lar tüm method ve attributes larının superclass ından alırlar. Bu işlem için extends keyword.
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Kurucular(Yapıcılar), Yıkıcılar
Java İle Programlamaya GİRİş
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Java Threads Dr.Galip AYDIN

Java Threads (İş Parçacıkları) Multithreading:Program içerisinde aynı anda birden fazla işin yapılabilmesi. Aynı program içerisinde birçok Thread çalışabilir. Java’da bütün Thread sınıfları java.lang.Thread class kullanılarak oluşturulur ve kontrol edilir. Bu iş parçacıkları eşzamanlı olarak asenkron veya senkron olarak çalışabilir.

Multithreading vs. Multiprocessing Bağımsız işlemlerle karşılaştırıldığında iş parçacıkları daha hafiftir İş parçacıkları aynı adres alanını paylaştıkları için veri ve kodları paylaşabilir. Context switching (içerik değiştirme) iş parçacıklarında işlemlere göre daha az pahalıdır İş parçacıkları arası haberleşme işlemler arası haberleşmeye göre daha ucuzdur İş parçacıkları farklı görevlerin aynı zaman aralığında gerçekleştirilmesine olanak sağlarlar

Java Threads thread bir nesne değil bir akış kontrolü yöntemidir Sırayla işletilecek bir dizi komut barındırır Thread bir nesnedir void start() Yeni bir Thread oluşturup çalışabilir hale getirir void run() Yeni Thread hayatına bu metodun içinde başlar

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

Thread Oluşturulması Object A Object BThread (extends Thread) Thread t = new BThread(); t.start(); doMoreStuff(); BThread() { } void start() { // create thread void run() { doSomething();

İş parçacıklarının oluşturulması Java’da bir iş parçacığı oluşturmak için iki yöntem kullanılır: Runnable interface kullanmak (java.lang.Runnable) Thread sınıfını extend etmek (java.lang.Thread)

Runnable Interface Thread nesnesine yardımcı bir nesnedir Thread nesnesinin run() metodu Runnable nesnesinin run() metodunu çağırır Thread’in kalıtıma bağlı olmadan, herhangi bir nesnenin içinde çalışmasını sağlar

Runnable Interface The Runnable Interface Signature public interface Runnable { void run(); } 1. Herhang bir sınıf Runnable Interface’ini thread tarafından çalıştırılacak olan run() metodunu sağlayarak implement eder. 2. Thread sınıfının bir nesnesi, kurucu metoduna bir Runnable nesnesi geçilerek oluşturulur. Şimdi Thread nesnesinin run() metodunu implement eden bir Runnable nesnesi var. 3. Önceki adımda oluşturulan Thread nesnesinin start() metodu uyarılır. Bu metod yeni bir thread başlatılır başlatılmaz kontrolü döndürür. 4. run() metodu biter bitmez thread biter.

Not Runnable Bir thread "Not Runnable" durumuna aşağıdaki dört durumdan birisi oluşunca girer: suspend() metod u çağrılınca sleep() metodu çağrılınca Thread wait() metodu kullanarak bir şart değişkenini beklemek için kullanıyorsa I/O için blok olmuşsa.

Thread Lifecycle Active sleep(500) wake up JVM Born start() Blocked suspend() Runnable resume() stop() wait stop() notify Dead block on I/O I/O available

class RunnableThread implements Runnable { Thread runner; public RunnableThread() { } public RunnableThread(String threadName) { runner = new Thread(this, threadName); System.out.println("RUNNER " + runner.getName()); runner.start(); public void run() { System.out.println("INFO: " + Thread.currentThread()); public class RunnableOrnek { public static void main(String[] args) { Thread thread1 = new Thread(new RunnableThread(), "thread1"); Thread thread2 = new Thread(new RunnableThread(), "thread2"); RunnableThread thread3 = new RunnableThread("thread3"); //Start the threads thread1.start(); thread2.start(); try { //delay for one second Thread.currentThread().sleep(1000); } catch (InterruptedException e) { } //Display info about the main thread System.out.println("MAIN " + Thread.currentThread());

RUNNER thread3 INFO: Thread[thread3,5,main] INFO: Thread[thread2,5,main] INFO: Thread[thread1,5,main] MAIN Thread[main,5,main]

2. Yöntem: Thread Sınıfının Extend Edilmesi Thread sınıfını extend eden bir sınıf, Thread sınıfının run() metodunu yeniden oluşturarak yürütülecek kodu tanımlar. Bu sınıf kurucu metodunda iş parçacığını başlatmak için Thread kurucu metodunu super() kullanarak uyarabilir. Thread sınıfından miras alınan start() metodu iş parçacığını başlatacak olan sınıfta çağrılır.

class ThreadClass extends Thread { private long basla; public ThreadClass(String isim) { super(isim); } public void yaz() { try { for (int i = 0; i < 5; i++) { sleep(500); long simdi = System.currentTimeMillis(); Calendar c = Calendar.getInstance(); c.setTimeInMillis(simdi); System.out.println(getName() + " " + c.getTime().toString()); //System.out.println(getName() + " " + (simdi-basla)); } catch (Exception ex) { ex.printStackTrace(); //System.out.println(System.currentTimeMillis()); public void run(){ yaz(); System.out.println(getName() + " EXITING");

import java.util.Calendar; public class ThreadOrnek { public static void main(String[] args) { long basla = System.currentTimeMillis(); ThreadClass t1 = new ThreadClass("Thread 1"); ThreadClass t2 = new ThreadClass("Thread 2"); ThreadClass t3 = new ThreadClass("Thread 3"); t1.start(); t2.start(); t3.start(); System.out.println("----------------"); long son = System.currentTimeMillis(); System.out.println("GECEN ZAMAN = " + (son-basla)); }

GECEN ZAMAN = 0 Thread 1 Mon Mar 02 12:51:36 EET 2009 Thread 2 Mon Mar 02 12:51:36 EET 2009 Thread 3 Mon Mar 02 12:51:36 EET 2009 Thread 1 Mon Mar 02 12:51:37 EET 2009 Thread 2 Mon Mar 02 12:51:37 EET 2009 Thread 3 Mon Mar 02 12:51:37 EET 2009 Thread 1 Mon Mar 02 12:51:38 EET 2009 Thread 1 EXITING Thread 2 Mon Mar 02 12:51:38 EET 2009 Thread 2 EXITING Thread 3 Mon Mar 02 12:51:38 EET 2009 Thread 3 EXITING