synchronized关键字使用剖析
来源:互联网 发布:网络第一神书悟空传 编辑:程序博客网 时间:2024/05/19 16:50
synchronized关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法,有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,直接运行。它包括两种用法:synchronized 方法和 synchronized 块。
主要有两种用法:synchronized方法和synchronized代码块
对于synchronized方法,有如下作用:
public synchronized void syncCounter(int newVal){System.out.println("synchronized方法...");}
确保了同一时刻对于每一个类实例,其所有声明为 synchronized 的成员函数中至多只有一个synchronized方法处于可执行状态(因为至多只有一个能够获得该类实例对应的锁),从而有效避免了类成员变量的访问冲突(只要所有可能访问类成员变量的方法均被声明为 synchronized)。
synchronized 方法也有它的缺陷:
若将一个大的方法声明为synchronized 将会大大影响效率,典型地,若将线程类的方法 run() 声明为 synchronized ,由于在线程的整个生命期内它一直在运行,因此将导致它对本类任何 synchronized 方法的调用都永远不会成功。当然我们可以通过将访问类成员变量的代码放到专门的方法中,将其声明为 synchronized ,并在主方法中调用来解决这一问题,但是 Java 为我们提供了更好的解决办法,那就是 synchronized 块。
对于synchronized代码块:
synchronized 块是这样一个代码块,其中的代码必须获得对象 syncObject (如前所述,可以是类实例或类,eg. this)的锁方能执行,具体机制同前所述。由于可以针对任意代码块,且可任意指定上锁的对象,故灵活性较高。
int i=100,userId=2;String userName="SyncMM";public void methodName(){synchronized(this){i++;System.out.println("Synchronized param i:"+i);}System.out.println("userName:"+userName);}
- synchronized关键字使用剖析
- Synchronized关键字剖析
- synchronized关键字的使用
- synchronized关键字的使用 .
- synchronized 关键字的使用
- synchronized 关键字的使用
- Synchronized关键字的使用
- synchronized关键字的使用
- Synchronized 关键字的使用
- Java Synchronized关键字的使用
- synchronized关键字的详细使用
- Java关键字synchronized使用总结
- 线程同步 synchronized关键字使用
- JavaSE第一百零二讲:synchronized关键字常见陷阱深度剖析
- 使用Synchronized关键字同步类方法
- 黑马程序员-synchronized关键字的使用总结
- java之synchronized关键字使用详解
- 同步线程的synchronized关键字的使用
- ASIHTTPRequest系列(四):Cookies
- SSH框架源码下载
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习入门实例
- 通过Vs2012本地安装Sharepoint 2013 解决方案(不是联机)【Sharepoint 2013 - Empty project error】
- python game练习4
- synchronized关键字使用剖析
- ubuntu 下 VMware Play安装XP系统用Flash Tool刷机问题
- 北大ACM POJ 2602 Superlong sums
- 很形象的卡尔曼滤波器原理介绍(转载)
- xendesktop 使用Active Directory来检测构成站点的控制器
- 振兴中华 蓝桥杯初赛
- android运行后台服务的生命周期与使用技巧
- hduoj The calculation of GPA
- iOS 学习笔记9 NSBundle 学习