Java 多线程同步问题的探究(二、给我一把锁,我能创造一个规矩)
2010-05-14 00:00:00 来源:WEB开发网在上一篇中,我们讲到了多线程是如何处理共享资源的,以及保证他们对资源进行互斥访问所依赖的重要机制:对象锁。
本篇中,我们来看一看传统的同步实现方式以及这背后的原理。
很多人都知道,在Java多线程编程中,有一个重要的关键字,synchronized。但是很多人看到这个东西会感到困惑:“都说同步机制是通过对象锁来实现的,但是这么一个关键字,我也看不出来Java程序锁住了哪个对象阿?“
没错,我一开始也是对这个问题感到困惑和不解。不过还好,我们有下面的这个例程:
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 }
更多精彩
赞助商链接