www.fatihkabakci.com

Personal Website and Computer Science TUR EN

JAVA CONCURRENT EXCHANGER

Last update: 11/9/2014 2:24:00 AM

Yazan:Fatih KABAKCI

Eş zamanlı Java API içerisinde tanımlanan en basit senkronizasyon nesnesi Exchanger' dır. Bir Exchanger, iki thread arasında basitçe veri alış verişi sağlar. İçinde tanımladığı exchange() metodu ile gönderilecek jenerik argümanı karşı tarafa ulaştırırken, bunun karşılığında metodun döndürdüğü değer ise karşı taraftan alınan jenerik verinin kendisi olarak tanımlanır.

Jenerik bir sınıf olan Exchanger nesneleri her türlü veri tipi ile çalışabilir durumdadır. Konuyu daha iyi anlamak adına aşağıda verilen örneği incelemeye çalışalım.

Bilindiği üzere bir alış veriş işleminde basitçe bir satıcı ve bir müşteri bulunur. Satıcı müşteriye sattığı ürün karşılığında, ondan para alır ve alış veriş işlemini tamamlar. Bir diğer ifade ile, müşteri aldığı ürün karşılığında satıcıya para öder. Bu iki işlem senkronize bir şekilde gerçekleşir. Aşağıdaki örnekte de bir satıcı olduğunu ve bir ürünü müşteriye sattığını düşünelim. Bu durumda satılan ürün ve verilen paranın alış veriş işleminde bir araç olduğunu düşünürsek, exchange() metotlarında bunu ortak olarak kullanabiliriz.

Örnek sınıflar aşağıda verilmiştir.

Material Sınıfı

package Concurrent.Exchanger;

/**
 * @author www.fatihkabakci.com
 * This class is any material which is used for shopping
 */
public class Material {

   String material;

   public Material(String material) {
      this.material = material;
   }

   public String toString() {
      return material;
   }
}

Seller Sınıfı

package Concurrent.Exchanger;

import java.util.concurrent.Exchanger;

/**
 * @author www.fatihkabakci.com
 */
public class Seller implements Runnable {

   Exchanger<Material> seller;
   Material            product;

   public Seller(Exchanger<Material> seller, Material product) {
      this.seller = seller;
      this.product = product;
   }

   @Override
   public void run() {
      try {
         Material money = seller.exchange(product);
         System.out.println("[Seller:] earned " + money);
      }
      catch (InterruptedException e) {
         e.printStackTrace();
      }
   }
}

Customer Sınıfı

package Concurrent.Exchanger;

import java.util.concurrent.Exchanger;

/**
 * @author www.fatihkabakci.com
 */
public class Customer implements Runnable {

   Exchanger<Material> customer;
   Material            money;

   public Customer(Exchanger<Material> customer, Material money) {
      this.customer = customer;
      this.money = money;
   }

   @Override
   public void run() {
      try {
         Material product = customer.exchange(money);
         System.out.println("[Customer:] bought a " + product);
      }
      catch (InterruptedException e) {
         e.printStackTrace();
      }
   }
}

Exchanging - Main Sınıfı

package Concurrent.Exchanger;

import java.util.concurrent.Exchanger;

/**
 * @author www.fatihkabakci.com
 * This class shows that how Exchanger is implemented
 */
public class Exchanging {
   public static void main(String[] args) {
      Exchanger<Material> market = new Exchanger<Material>();
      
      Seller seller = new Seller(market, new Material("Television"));
      Customer customer = new Customer(market, new Material("250 $"));

      new Thread(customer).start();
      new Thread(seller).start();
   }
}
Yukarıdaki örnekte dikkat edilmesi gereken satırlar, her iki thread sınıfının run() metodunda yazılan exhange() ifadeleridir. Exchanger senkronizasyon nesnesinin bu metodu aşağıdaki prototipe sahiptir.
public V exchange(V paramV)
Bu sayede Seller sınıfında aşağıdaki gibi yazılabilirken,
Material money = seller.exchange(product);
Customer sınıfında ise aşağıdaki gibi yazılabilmiştir.
Material product = customer.exchange(money);

Satıcı Televizyon satarken, bunun karşılığında müşteriden 250$ dolar kazanmıştır. Diğer bir ifade ile, müşteri 250$ dolar öderken, bunun karşılığında satıcıdan televizyon almıştır.

Yukarıdaki örnekten anlaşılacağı üzere, Exchanger senkronizasyon nesneleri iki thread arasında basitçe veri alış verişini sağlamaktadır. Bu veriler null olarak gönderilebildiği gibi, her tipte veri kullanımını da desteklemektedir.

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.