synchronized关键字用于一个方法的时候
来源:互联网 发布:华为手机数据迁移sd卡 编辑:程序博客网 时间:2024/05/21 20:29
代码一:
class Bank {private int money = 1000;public synchronized int getMoney(int number) {if (number > money) {return -1;} else if (number < 0) {return -2;} else if (money < 0) {return -3;} else {try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}money -= number;}System.out.println("left:" + money);return number;}}代码二:class Bank {private int money = 1000;public int getMoney(int number) {synchronized (this) {if (number > money) {return -1;} else if (number < 0) {return -2;} else if (money < 0) {return -3;} else {try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}money -= number;}System.out.println("left:" + money);return number;}}}
如果建立几个线程同时分别运行这两段代码的话,你会发现运行的结果是相同的。
其实,synchronized一个method的时候,就相当于对于当前对象的synchronized,即synchronized(this)。可以进一步的理解为,synchronized只能给对象上锁,而对方法上锁的写法其实是对synchronized(this)的简写形式,从代码可以看出,这种简写形式有时候非常方便。
但是对于某些精准操作的话就不能这么简写了。比如:
private Bank bank;
public void doSomething
{
do something before;
synchronized(bank){do something};
do somethingafter;
}
上面这种写法的好处是可以针对某些需要同步的操作进行synchronized,而不需要同步的操作则不需要synchronized,可以节省一些时间,第二点当然是刚刚谈到的精准控制了。
- synchronized关键字用于一个方法的时候
- synchronized 方法 synchronized关键字详解
- Java 慎用方法级别的synchronized关键字
- synchronized关键字修饰方法
- synchronized,当作用于方法与对象的不同之处
- synchronized是解决多线程中同步问题的一个关键字
- java的synchronized关键字
- synchronized关键字的使用
- Java的关键字synchronized
- Synchronized 关键字的理解
- synchronized关键字的使用 .
- synchronized关键字的用法
- synchronized 关键字的使用
- synchronized 关键字的使用
- synchronized关键字的用法
- synchronized 关键字的体验
- synchronized关键字的理解
- Synchronized关键字的使用
- 爬取google scholar数据
- Uninstall PhraseExpress with WindowsUninstaller.Org Removal Tips
- 二进制实用程序(objdump, readelf,ar, nm等)(收藏)
- Oracle实例(二)Oracle的内存结构
- Android之实现系统联系人软件的分组和字母提示效果
- synchronized关键字用于一个方法的时候
- NGUI 分辨率自适应
- 堆排序算法
- java读写文件用datainputstream和dataoutputstream
- 智力题-2:序列变为0
- 谈恋爱就像TCP连接
- 设计模式之建造者模式
- (收藏)C内存对齐
- 再来个选择排序……然后洗洗睡觉