本篇随笔主要介绍 java 中 synchronized 关键字常用法,主要有以下四个方面: 1、实例方法同步 2、静态方法同步 3、实例方法中同步块 4、静态方法中同步块 我觉得在学习synchronized关键字之前,我们首先需要知道以下一点:Java 中每个实 ...
本篇随笔主要介绍 java 中 synchronized 关键字常用法,主要有以下四个方面:
1、实例方法同步
2、静态方法同步
3、实例方法中同步块
4、静态方法中同步块
我觉得在学习synchronized关键字之前,我们首先需要知道以下一点:Java 中每个实例对象对应一把锁且每个实例对象只有一把锁,synchronized 关键字是通过对相应的实例对象加锁来实现同步功能的。
一、实例方法中使用 synchronized 加锁
实例方法中默认被加锁的对象是调用此方法的实例对象。
1 class ImmutableValue { 2 public synchronized void comeIn() throws InterruptedException{ 3 System.out.println(Thread.currentThread().getName() + ": start"); 4 Thread.sleep(5000); 5 System.out.println(Thread.currentThread().getName() + ": finish"); 6 } 7 public void synchronized comeInIn() throws InterruptedException { 8 System.out.println(Thread.currentThread().getName() + ": start"); 9 Thread.sleep(5000);10 System.out.println(Thread.currentThread().getName() + ": finish");11 }12 }13 public class TestImmutableValue {14 public static void main(String[] args) {15 ImmutableValue im = new ImmutableValue();16 Thread t1 = new Thread(new Runnable() {17 18 @Override19 public void run() {20 // TODO Auto-generated method stub21 try {22 im.comeIn();23 } catch (InterruptedException e) {24 // TODO Auto-generated catch block25 e.printStackTrace();26 }27 }28 29 }, "t1");30 Thread t2 = new Thread(new Runnable() {31 32 @Override33 public void run() {34 // TODO Auto-generated method stub35 try {36 im.comeInIn();37 } catch (InterruptedException e) {38 // TODO Auto-generated catch block39 e.printStackTrace();40 }41 }42 43 }, "t2");44 t1.start();45 t2.start();46 }47 }
原标题:Java synchronized关键字用法(清晰易懂)
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。