..


Sponsor Bağlantılar

Java paylaşılan veri yönetimi

Tarafından yazılmış Madde Damiano Verda
2 Sayfa 1

Daha taraflara maruz başka bilgi işleme görevler gibi bir paylaşılan veri düşünebilirsiniz. Örneğin, euro / dolar temsil edilen bir sayı saklamak, düşünün. Biz düzenli olarak ne kur ve güncellemeleri değişkenin değerini denetleyen bir program var. Bir veya daha fazla diğer programları, döviz kuru dönüştürme fiyat çalışması için güncelleştirilmiş bilgileri kullanacağız.

Yönetimi ortak bir, hatta bu basit örnekte, özel ilgiye gereksinim dikkat edin. Bir uygulama dönüştürmek için döviz kuru okumak gerekiyor ise, aynı zamanda başka bir program kur kendini değiştirmek için bir istek alındığında bu örneğin düşünün.

Hangisi önce çalıştırılır? Hangi döviz kuru dönüşüm yapılır? Sorun, hatta biraz daha karmaşık bazı durumlarda, daha şiddetli olabilir.

Ilgi değişken temel değil, örneğin, veri kümesi oluşur bu gerçeği düşünün. Şu anda sadece kısmi yazmak yapılacak ve daha sonra yazma tamamlanması bir okuyarak takip edebilir. Işlemleri daha sonra anlamsız sonuçlar ve bu nedenle kabul edilemez sebebiyet veren, sadece kısmen değiştirilen değerler kümesi ile gerçekleştirilen olacaktır.

Birçok programlama dili ortak değişkenler yönetimi için özel araçlar sağlamak sorunların bu tür varlığı göz önüne alındığında. Sorunların bu kategori Java programlama dili, en önemlisi kullanılan birinde işlenir Biz özellikle aşağıda inceleyin.

Önce biz sağlayabilirsiniz anlamak için gereken aynı anda sadece bir program ya da daha doğrusu bir anda yalnızca bir iş parçacığı (bir konu bir programın birden çok iş parçacığı oluşabilen diğer bir deyişle bir süreç ya da programın temel bileşeni vardır, Paylaşılan bir değişken erişebilirsiniz) aynı anda çalıştırın. Bize bu garanti teklif sağlar mekanizması karşılıklı dışlama denir.

Karşılıklı dışlama

Aşağıdaki şekilde yapılandırılmıştır Variabile_Condivisa denilen (veri sürecinin kendisi için yararlı işlevleri veya veri ve yöntemler bir dizi) bir sınıf gelişmekte düşünün:






 public class Variabile_Condivisa







 {



   



 euro_dollaro şamandıra;



   



 euro_sterlina şamandıra;





   



 Variabile_Condivisa ()



  



 {



     



 euro_dollaro = 1;



     



 euro_sterlina = 1;



  



 }





   



 set_euro_dollaro void (e_d float) = {euro_dollaro e_d;}



   



 set_euro_sterlina void (float e_s) = {euro_sterlina e_s;}





   



 get_euro_dollaro float () {euro_dollaro return;}



   



 get_euro_sterlina float () {euro_sterlina return;}







 }



Iki ifade, ve birden çok program arasında bilgi (ya da birden çok iş parçacığı arasında) paylaşmak istediğiniz kur euro / dolar ve euro / sterlin ve temsil eden bu euro_dollaro euro_sterlina. Geliştirilen yöntemler bu verileri bir değer (ve set_euro_dollaro set_euro_sterlina) atamak ve bu değerleri (ve get_euro_dollaro get_euro_sterlina) okuma hakkı verilir.

Sonra sınıf yapıcısı yürütülür denir ve değişkenleri ve euro_dollaro euro_sterlina değerlerini ayarlayarak bu durumda her Variabile_Condivisa oluşturulması, 1 ayarlanmış olduğundan belirli bir yöntem (Variabile_Condivisa) tanımlamak.

Daha sonra programımızda var Variabile_Condivisa (bir nesne programı içinde başvurulabilir bu set belirli bir unsuru temsil ederken sınıf, ortak özellikleri olan kişilerin bir takım temsil adında bir nesne türü oluşturmak ) Bu şekilde:






 Variabile_Condivisa Variabile_Condivisa var = new ();



Şimdi var paylaşılan veri yönetiminde herhangi bir sorun olmadığından emin olmak gibi? Java dili bir parametre olarak herhangi bir nesne kabul senkronize anahtar kelime (veya anahtar kelimeler) sağlar. Örnekte gösterildiği gibi senkronize sayesinde, tanımlayabilir, kod bloğu:





 senkronize (var)







 {



  



 / / Kod ayrılmış blok (var) Senkronize

  





 }



Senkronize blok yönergeleri gerçekleştirmeden önce, herhangi bir konu değişken var üzerinde kilidi alır, ya da kilit yayımlanıncaya kadar kod aynı engellemek için tüm diğer erişimi engellemek, ya da sonrasına kadar tüm blok çalışıyor Küme ayraçları kod ayrılmış bir örneğidir.

Başka bir deyişle, senkronize deyimi (var) gerçekleştirir ilk iplik (öncelikle aramak için hayal olan) aslında tamamlamamıştır ilk kadar senkronize deyimi (var) çalıştırmak için başka bir iş parçacığı engelleyen bir bariyer oluşturur kod ayrılmış ve senkronize blok yürütme. Bu bloklar daha sonra yönergeleri paylaşılan veri okuma veya yazma eklenir.

Bu şekilde, bir anda yalnızca bir iplik paylaşılan bir değişken erişebilmesini sağlar karşılıklı dışlama, garantilidir. Bu nesnenin senkronize bir parametre olarak geçirilecek dikkatle seçmek gerekir ki, dikkate alınmalıdır. Sizin gibi bu durumda örneğin karşılıklı dışlama için bir mekanizma, okumak veya düzenlemek istediğiniz değişken oluşturmak istediğiniz tüm konuları için ortak bir nesne olmalıdır.

Bu noktada, bizim programı ayarlamak istiyorsanız, düşünün bu yüzden askıya alınacak değişken var değerini okuyun ve sadece kendi istek takip eden ilk güncellemeden sonra sonuçlarını değerlendirmek istediğiniz konuları söyledi. Eğer okuma ve yazma arasında bir eşitleme mekanizması tanımlamak istediğinizi düşünün.

Aynı Kategoride ...
E-Öğrenme
Linux (Ders) Linux (Ders)
Açık kaynak sistemi komple rehberi. 49 € düşük.
PHP (Ders) PHP (Ders)
Dinamik Web siteleri oluşturmak için tam ders. 49 € düşük.
Ruby on Rails ve Ruby (Ders) Ruby on Rails ve Ruby (Ders)
Ruby ve RoR ile yazılım ve Web uygulamaları oluşturun. En düşük € 39.
Sponsor Bağlantılar