Java多线程程序设计入门

http://tech.ddvip.com   2006年03月31日    社区交流

本文详细介绍Java多线程程序设计入门

  线程的(同步)控制

  一个Java程序的多线程之间可以共享数据。当线程以异步方式访问共享数据时,有时候是不安全的或者不和逻辑的。比如,同一时刻一个线程在读取数据,另外一个线程在处理数据,当处理数据的线程没有等到读取数据的线程读取完毕就去处理数据,必然得到错误的处理结果。这和我们前面提到的读取数据和处理数据并行多任务并不矛盾,这儿指的是处理数据的线程不能处理当前还没有读取结束的数据,但是可以处理其它的数据。

  如果我们采用多线程同步控制机制,等到第一个线程读取完数据,第二个线程才能处理该数据,就会避免错误。可见,线程同步是多线程编程的一个相当重要的技术。

  在讲线程的同步控制前我们需要交代如下概念:

  1 用Java关键字synchonized同步对共享数据操作的方法

  在一个对象中,用synchonized声明的方法为同步方法。Java中有一个同步模型-监视器,负责管理线程对对象中的同步方法的访问,它的原理是:赋予该对象唯一一把´钥匙´,当多个线程进入对象,只有取得该对象钥匙的线程才可以访问同步方法,其它线程在该对象中等待,直到该线程用wait()方法放弃这把钥匙,其它等待的线程抢占该钥匙,抢占到钥匙的线程后才可得以执行,而没有取得钥匙的线程仍被阻塞在该对象中等待。

    file://声明同步的一种方式:将方法声明同步
   class store
    {
     public synchonized void store_in()
     {
       ….
     }
     public synchonized void store_out(){
       ….}
     }

责编:豆豆技术应用

正在加载评论...