java中synchronized的用法

原创 2013年12月02日 23:09:15

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




java中几种synchronized用法总结

文章为自己测试后所写,有说得不对的地方希望看到的大神能够指出来让我得以改正,以免误导其他同行 synchronized方法,synchronized静态方法,synchronized(this),sy...
  • apeng_1102
  • apeng_1102
  • 2016年09月28日 09:31
  • 474

Java 彻底弄明白synchronized的使用

多个线程访问共享资源(临界资源)的时候,会出现线程安全问题,安全问题大多数是可见性问题和原子性问题。 可见性: 例如执行多个线程执行a++,那么多个线程就会被分配到不同的处理器上,每个处理器都从主存上...
  • oxuanboy1
  • oxuanboy1
  • 2016年06月23日 18:08
  • 1992

JAVA线程安全之synchronized关键字的正确用法

JAVA线程安全关于synchronized关键字的用法,今天才知道原来我一直错了。以为用了synchronized关键字包住了代码就可以线程同步安全了。 测试了下。发现是完全的错了。syn...
  • WALLEZhe
  • WALLEZhe
  • 2016年08月23日 13:48
  • 767

Java中synchronized的使用实例

一、使用场景在负责后台开发的时候,很多时候都是提供接口给前端开发人员去调用,会遇到这样的场景:需要提供一个领奖接口,每个用户名只能领取一次,我们可以将成功领取的用户在数据库用个标记保存起来。如果这个用...
  • u013142781
  • u013142781
  • 2015年12月30日 11:45
  • 6898

Java中Synchronized和Lock的使用和区别

转载自:http://blog.csdn.net/imzoer/article/details/9457639  Lock的锁定是通过代码实现的,而 synchronized 是在 JVM 层面...
  • zgrjkflmkyc
  • zgrjkflmkyc
  • 2016年03月02日 11:43
  • 3886

深入研究 Java Synchronize 和 Lock 的区别与用法

在分布式开发中,锁是线程控制的重要途径。Java为此也提供了2种锁机制,synchronized和lock。做为Java爱好者,自然少不了对比一下这2种机制,也能从中学到些分布式开发需要注意的地方。 ...
  • natian306
  • natian306
  • 2014年01月19日 15:22
  • 35289

java中synchronized理解与使用

同步锁的基本理解当synchronized锁住一个对象后,别的线程如果也想拿到这个对象的锁,就必须等待这个线程执行完成释放锁,才能再次给对象加锁,这样才达到线程同步的目的。即使两个不同的代码段,都要锁...
  • jianiuqi
  • jianiuqi
  • 2016年12月03日 23:19
  • 228

java中synchronized的用法详解

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。      一、当两个并发线程访问同一个对象object中的这个synchronize...
  • zh521zh
  • zh521zh
  • 2016年04月13日 16:56
  • 320

Java并发——线程同步Volatile与Synchronized详解

Java面试——线程同步volatile与synchronized详解 0. 前言面试时很可能遇到这样一个问题:使用volatile修饰int型变量i,多个线程同时进行i++操作,这样可以实现线程安全...
  • SEU_Calvin
  • SEU_Calvin
  • 2016年08月30日 19:09
  • 13635

synchronized是什么方法?干什么用的?

 synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块。 1. synchronized 方法:通过在方法声明中加入 synchro...
  • qw222pzx
  • qw222pzx
  • 2016年09月22日 10:29
  • 914
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中synchronized的用法
举报原因:
原因补充:

(最多只允许输入30个字)