java中的知识涉及的范围是十分广阔的,而且它的知识点也是比较复杂的。今天就来为大家介绍一下,java多线程同步方法,同步代码块的实例展示,一起来看看吧。
首先是,同步方法
用synchronized关键字修饰方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。代码展示如下:
public class Bank { private int count = 0; // 账户余额 // 存钱 public synchronized void addMoney(int money) { count += money; System.out.println(System.currentTimeMillis() + "存进:" + money); } // 取钱 public synchronized void subMoney(int money) { if (count - money < 0) { System.out.println("余额不足"); return; } count -= money; System.out.println(+System.currentTimeMillis() + "取出:" + money); } // 查询 public void lookMoney() { System.out.println("账户余额:" + count); } }
同步代码块,
用synchronized关键字修饰语句块。被该关键字修饰的语句块会自动被加上内置锁,从而实现同步,代码展示如下:
public class Bank { private int count = 0; // 账户余额 // 存钱 public void addMoney(int money) { synchronized(this) { count += money; } System.out.println(System.currentTimeMillis() + "存进:" + money); } // 取钱 public void subMoney(int money) { synchronized(this) { if (count - money < 0) { System.out.println("余额不足"); return; } count -= money; } System.out.println(+System.currentTimeMillis() + "取出:" + money); } // 查询 public void lookMoney() { System.out.println("账户余额:" + count); } }
需要注意的是,同步是一种高开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个方法,使用synchronized代码块同步关键代码即可。
以上就是关于java多线程同步方法,同步代码块的实例展示的主要内容了。如果你对java知识感兴趣,想要了解更多java实例,敬请关注奇Q工具网。
推荐阅读: