Görsel Programlama DERS 11. Görsel Programlama - Ders11/ 1

Benzer belgeler
İş Parçacıkları (Threads)

İŞ PARÇACIKLARI (THREADS)

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş

Dağıtık Sistemler CS5001

Sınıfların Tekrardan Kullanılması. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1

İki Yöntem. Komposizyon (Composition) Kalıtım (Inheritance)

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

BİL-141 Bilgisayar Programlama I (Java)

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

İş Parçacıkları Thread(s)

KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR AĞLARI LABORATUARI. Soket Programlama

Multicore/Multithread Programlama

Üst Düzey Programlama

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Dağıtık Sistemler CS5001

Üst Düzey Programlama

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Üst Düzey Programlama

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Multithreading & Asynchronous Programlama

F.Ü. Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuvarı DENEY NO: 6 JAVA İLE DAĞITIK PROGRAMLAMA.

İŞLETİM SİSTEMLERİ. (Operating Systems)

İşletim Sistemlerine Giriş

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Java String İşlemleri

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.

BİL132 Bilgisayar Programlama II

Üst Düzey Programlama

// hataları işaret eden referans

YZM 3102 İşletim Sistemleri

BİL-141 Bilgisayar Programlama I (Java)

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

4. Bölüm Programlamaya Giriş

Kılgıladığı arayüzler: Serializable, Cloneable, Map<K,V>, NavigableMap<K,V>, SortedMap<K,V>

İşletim Sistemlerine Giriş

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

HSancak Nesne Tabanlı Programlama I Ders Notları

Dağıtık Sistemler CS5001

İşletim Sistemlerine Giriş

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

Sunum İçeriği. Programlamaya Giriş

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Nesne Yönelimli Programlama

Java Dersi. Altuğ Bilgin Altıntaş

İşletim Sistemlerinde Çok Prosesli Çalışma

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

DERS 10 İŞLETİM SİSTEMİ ÇALIŞMA PRENSİBLERİ VE HATA MESAJLARI

ATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ BAHAR DÖNEMİ ÖDEV-3

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

BM-311 Bilgisayar Mimarisi

JAVA ile DAĞITIK PROGRAMLAMA

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

& WIN 32 DEN BAKIŞ AÇISI İSMAİL YALÇIN

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

İşlem Yönetimi (Process Management)

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

PROCESS YARATIMI (TEKRAR):

Java, java.util paketi içinde mevcut olan Date sınıfını sağlar, bu sınıf güncel tarih ve zamanı kapsüllemektedir.

İşletim Sistemlerine Giriş

MOBİL UYGULAMA GELİŞTİRME

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Proje 1. Arayüz Tasarımı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Karşılaştırma İşlemleri ve Koşullu İfadeler

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. BLM401 Dr.Refik SAMET

BÖLÜM 3 3. İŞLETİM SİSTEMİNİN BAŞLICA ÖZELLİKLERİ

Yazılım Kodlama ve İ simlendirme Standartları v1.0

OPC Data Access (DA) Temelleri

Android e Giriş. Öğr.Gör. Utku SOBUTAY

YZM 2116 Veri Yapıları

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Background (Arka Plan)

Đlgili konular: Collection, Set, HashSet, Comparable, Comparator, TreeMap, Collections.synchronizedSortedSet(SortedSet), Serialized Form

Görsel Programlama DERS 08. Görsel Programlama - Ders08/ 1

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

2- NO Alarm Çıkış Rölesi 3- Fark Basınç Girişleri mA çıkış 5- Çoklu çalışma için bağlantı giriş çıkışı 6- Beklemeye Alma Girişi

ATATÜRK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BIM 205 GÖRSEL PROGRAMLAMA GÜZ DÖNEMİ ÖDEV-1

YMT219 VERİ YAPILARI ÖDEV-1

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

Java Class Yapısında Finalize Metotunun Kullanımı

İşletim Sistemleri-II

5.54. ENTEGRELERE SOĞUTUCU MONTAJI TOMASYONU. Abdulkadir ġengür

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Decorator Tasarım Şablonu

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Doç. Dr. Aybars UĞUR

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Transkript:

Görsel Programlama DERS 11 Görsel Programlama - Ders11/ 1

ÇOKLU KULLANIM(Multi Threading) Günümüz işletim sistemleri çok görevli(multi tasking) dir. Aynı anda farklı programlar çalışmakta, görevler yerine getirilmektedir. Çoklu kullanım da çok görevliliğe benzemektedir, aynı anda bir programın farklı bölümleri çalışabilmektedir. Aynı program içerisindeki birbirinden ayrı ve bağımsız çalışabilen alt bölümlerin her birine iş parçacığı (thread) denilir. Görsel Programlama - Ders11/ 2

ÇOKLU KULLANIM(Multi Threading) Bu iş parçacıkları(thread) sistemde tek bir işlemci var ise aynı işlemci üzerinde çok kısa sürelerde arka arkaya çalıştırılırlar, böylece işlemler aynı anda yapılıyormuş gibi algılanır. Birden fazla işlemci var ise bu iş parçacıkları farklı işlemcilerde çalıştırılırlar. Kendi uygulamamızda da çeşitli zamanlarda iş parçacıklarını kullanmamız gerebilir; örneğin kullanıcıya internetten inidirilen bir resim gösterilecektir. Bu resim bir iş parçacığı ile indirilirken kullanıcı uygulamadaki farklı işlemleri yapabilir. Görsel Programlama - Ders11/ 3

ÇOKLU KULLANIM(Multi Threading) Java da iş parçacıklarını iki şekilde yazabiliriz.birinci seçenek; yazdığımız sınıfın java.lang.thread sınıfından extends ile türetebiliriz. Bazı durumlarda sınıfımızın başka bir sınıftan türetilmesi zorunlu olabilir, bu gibi durumlarda sınıf tek bir sınıftan türetilebileceği için java.lang.runnable interface i kullanılmaktadır. Görsel Programlama - Ders11/ 4

Görsel Programlama - Ders11/ 5

Thread sınıfının Temel Metotları public void start(): iş parçacıklarının işlenmesini sağlar. run() metodunu çalıştırır. public void run(): iş parçacığının yapacağı işleri yerine getirir. public final void stop(): iş parçacığının durmasını sağlar. Görsel Programlama - Ders11/ 6

İş parçacığının çalışabilmesi için start() metodunun çalıştırılması gereklidir. Görsel Programlama - Ders11/ 7

İş Parçacığının(Thread) belirli bir süre beklemesi Görsel Programlama - Ders11/ 8

Görsel Programlama - Ders11/ 9

İş Parçacıklarının Öncelikleri İş parçacıklarına öncelik(priority) vererek o iş parçacığının önceliği ile orantılı çalışmasını sağlayabiliriz. Verilebilen öncelikler 1-10 arasındadır. 1 en düşük, 10 en yüksek öncelik değeridir. public final int getpriority(): iş parçacığının önceliğini geri çevirir. public final void setpriority(int yenioncelik): iş parçacığının çalışma önceliğini değiştirir. Görsel Programlama - Ders11/ 10

Görsel Programlama - Ders11/ 11

İş Parçacığının durumları Doğum başla Hazır(Ready) notify notifyall interrupt Quantumun bitmesi Thread zamanlanması işlemciye verilmesi I/O biter ve lock ele geçirilir. bekle(wait) Çalışıyor(Running) uyu(sleep) Synchronized bir ifadeye gelinmesi, bir I/O isteği Bekliyor(Waiting) Uyuyor(Sleeping) Bitmiş Bloklanmış(Blocked) kesme(interrupt) Görsel Programlama - Ders11/ 12

join() metodu join() metodu çalıştırıldığı iş parçacığının başka bir thread'in çalışmasını bitmesini beklemesini sağlar. public final void join() public final void join(long milisaniye) public final void join(long milisaniye,int nanosaniye) Thread t = new Thread(); Thread t2 = new Thread(); t2 içerisinde t.join() : yazdığımızda t iş parçacığının çalışması bitene kadar t2 thredinin beklemesini sağlar. Görsel Programlama - Ders11/ 13

Thread t = new Thread(); Thread t2 = new Thread(); join() metodu t.join(1000) :t iş parçacığının görevini tamamlaması için 1 saniye t2 bekler. Görsel Programlama - Ders11/ 14

join() metodu Görsel Programlama - Ders11/ 15

Çeşitli metotlar public final boolean isalive() : iş parçacığı start() ile başlatılmış ve çalışması bitmemiş ise true döndürür. public static Thread currentthread() : o anki aktif iş parçacığını geri döndürür. static int activecount(): uygulamadaki iş parçacığı sayısını geri döndürür. Görsel Programlama - Ders11/ 16

Senkronizasyon(Synchronized) İş parçacıkları her zaman ayrı veriler üzerinde işlem yapmazlar bazen ortak veriler üzerinde işlem yapabilirler. Bu tip durumlarda bir iş parçacığı bir veri üzerinde çalışırken başka bir iş parçacığının bu veriyi değiştirmemesi son derece önemlidir. Örneğin; bir iş parçası bir dosyadan okurken, başka bir iş parçasıda aynı dosya ya yazıyorsa hatalar olabilir. Görsel Programlama - Ders11/ 17

Senkronizasyon(Synchronized) Bu sorunu çözmek için synchronized kelimesi kullanılmaktadır. Java da her nesneye ait Monitor denilen bir anahtar bulunmaktadır. Synchronized kelimesini kullanarak bu nesnenin anahtarını elde ederiz. Bu anahtar kimde olursa o nesne üzerinde değiştirme hakkı o iş parçacığına aittir. Bu nesneyi kullanmayı bekleyen diğer iş parçacıkları, biz anahtarı serbest bırakıncaya kadar beklerler. Görsel Programlama - Ders11/ 18

Senkronizasyon(Synchronized) Kullanım şekli : 1) synchronized metot_adi(){ } 2) synchronized(nesne_adi){ } Görsel Programlama - Ders11/ 19

Senkronizasyon(Synchronized) Görsel Programlama - Ders11/ 20

Senkronizasyon(Synchronized) Görsel Programlama - Ders11/ 21

Görsel Programlama - Ders11/ 22

Üretici(Producer)/Tüketici(Consumer) Üretici bir iş parçacığıdır ve bir veri üreterek onu paylaşılan ortak bir veri alanına koyar. Tüketici de bir iş parçasıdır ve üretici tarafından üretilen bir değer ortak alanda var ise bu değeri alır ve kullanır. Tüketici, üretici değer üretip ortak alana koymadan Bir şey okumamalıdır; üretici de ürettiği ürün kullanılmadan yenisini üretip koymamalıdır. Görsel Programlama - Ders11/ 23

Üretici(Producer)/Tüketici(Consumer) Üretici yeni bir değer üretir ve wait() beklemeye geçer. Tüketici değeri okur ve notify() ile üreticiyi bilgilendirir ve wait() beklemeye geçer.üretici de yeni değeri ürettikten sonra notify() ile tüketiciyi bilgilendirir. Görsel Programlama - Ders11/ 24

Üretici(Producer)/Tüketici(Consumer) Görsel Programlama - Ders11/ 25

Üretici(Producer)/Tüketici(Consumer) Görsel Programlama - Ders11/ 26

Üretici(Producer)/Tüketici(Consumer) Görsel Programlama - Ders11/ 27

Üretici(Producer)/Tüketici(Consumer) Görsel Programlama - Ders11/ 28

Üretici(Producer)/Tüketici(Consumer) Senkronize Görsel Programlama - Ders11/ 29

Üretici(Producer)/Tüketici(Consumer) Senkronize Görsel Programlama - Ders11/ 30

Üretici(Producer)/Tüketici(Consumer) Senkronize Görsel Programlama - Ders11/ 31

Üretici(Producer)/Tüketici(Consumer) Senkronize Görsel Programlama - Ders11/ 32

Üretici(Producer)/Tüketici(Consumer) Senkronize Görsel Programlama - Ders11/ 33

Kilitlenme (Deadlock) Bazen iki sınıf anı anda birbirlerinin mevcut anda kullandıkları kaynakları beklerler. Bu bekleme nedeniyle iki iş parçacığı da iş yapamazlar ve kilitlenirler. Bu olaya kilitlenme(dead lock) denilir. Örneğin; Görsel Programlama - Ders11/ 34

Görsel Programlama - Ders11/ 35

Kilitlenme (Deadlock) Görsel Programlama - Ders11/ 36

Kilitlenme (Deadlock) Görsel Programlama - Ders11/ 37

Görsel Programlama DERS 11 Görsel Programlama - Ders11/ 38