Java多线程初学者指南(10):使用Synchronized关键字同步类方法
中国IT站 www.chinaitz.com 2009-3-21

  要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步,代码如下:

public synchronized void run()
{
    Java多线程初学者指南(10):使用Synchronized关键字同步类方法 Java多线程初学者指南(10):使用Synchronized关键字同步类方法
}

  从上面的代码可以看出,只要在void和public之间加上synchronized关键字,就可以使run方法同步,也就是说,对于同一个Java类的对象实例,run方法同时只能被一个线程调用,并当前的run执行完后,才能被其他的线程调用。即使当前线程执行到了run方法中的yield方法,也只是暂停了一下。由于其他线程无法执行run方法,因此,最终还是会由当前的线程来继续执行。先看看下面的代码:

 

sychronized关键字只和一个对象实例绑定

  class Test
  {
        public synchronized void method()
       {
           Java多线程初学者指南(10):使用Synchronized关键字同步类方法 Java多线程初学者指南(10):使用Synchronized关键字同步类方法
       }
  }
   
  public class Sync implements Runnable
  {
       private Test test;
       public void run()
       {
            test.method();
       }
       public Sync(Test test)
       {
           this.test = test;
       }
       public static void main(String[] args) throws Exception
       {
           Test test1 =  new Test();
           Test test2 =  new Test();
           Sync sync1 = new Sync(test1);
           Sync sync2 = new Sync(test2);
           new Thread(sync1).start();
           new Thread(sync2).start(); 
       }
   }

共7篇1 2 3 4 5 6 7 下一页
责任编辑:admin本文仅代表作者观点,与中国IT站立场无关。
收藏】 【推荐】 【投稿】 【 】 【打印】 【关闭
评论加载中...