lastavatar 发表于 2013-2-5 09:42:47

Java 多线程同步问题的探究(二、给我一把锁,我能创造一个规矩)

转自:http://www.blogjava.net/zhangwei217245/archive/2010/04/24/315283.html
 
在上一篇中,我们讲到了多线程是如何处理共享资源的,以及保证他们对资源进行互斥访问所依赖的重要机制:对象锁。



本篇中,我们来看一看传统的同步实现方式以及这背后的原理。



很多人都知道,在Java多线程编程中,有一个重要的关键字,synchronized。但是很多人看到这个东西会感到困惑:“都说同步机制是通过对象锁来实现的,但是这么一个关键字,我也看不出来Java程序锁住了哪个对象阿?“



没错,我一开始也是对这个问题感到困惑和不解。不过还好,我们有下面的这个例程:



<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%;"> 1 public class ThreadTest extends Thread {

 2 

 3     private int threadNo;

 4 

 5     public ThreadTest(int threadNo) {

 6         this.threadNo = threadNo;

 7     }

 8 

 9     public static void main(String[] args) throws Exception {

10         for (int i = 1; i < 10; i++) {

11             new ThreadTest(i).start();

12             Thread.sleep(1);

13         }

14     }

15 

16     @Override

17     public synchronized void run() {

18         for (int i = 1; i < 10000; i++) {

19             System.out.println("No." + threadNo + ":" + i);

20         }

21     }

22 }
页: [1]
查看完整版本: Java 多线程同步问题的探究(二、给我一把锁,我能创造一个规矩)