关闭

java中synchronized的用法

345人阅读 评论(0) 收藏 举报
分类:

1.在方法声明中使用,

synchronized放在范围操作符之后,返回类型之前,在此类的一个实例中,多个线程同步调用此方法,只有一个线程会执行此方法,其它线程会等待,等执行线程执行完后,另一个线程才会继续执行.如下面的例子.

注: 需在此类的同一个实例中,才能保证多个线程有序执行此方法.否则此关键字不会生效.

package thread;

public class ThreadTest {

	class A{
		public synchronized void test(int i) {
			System.out.println("开始"+i);
			try {
				Thread.sleep(2000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("结束"+i);
		}
	}
	
	class B implements Runnable{
		 A a;
		int i;
		public B(int i,A a) {
			this.i = i;
			this.a = a;
		}
		
		public void run() {
			a.test(i);
		}
	}
	
	public static void main(String[] args) {
		A a = new ThreadTest().new A();
		B b = new ThreadTest().new B(1,a);
		B c = new ThreadTest().new B(2,a);
		new Thread(b).start();
		new Thread(c).start();
	}
}
执行结果:

开始1
结束1
开始2
结束2




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12075次
    • 积分:208
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:6篇
    • 译文:0篇
    • 评论:0条