Java--银行存取款线程设计2(线程互斥)
2016-05-17 17:00
337 查看
同步:对象锁的概念。如果多个线程共享某一个对象,操作系统会为每个对象用一个单词生成一个锁,锁和对象一一对应。如果一个线程要对某个对象进行操作,必须拿到对象的锁。
加锁:同步语句或者同步方法(这里用了同步语句)。解决交互线程与时间有关的错误。
注:互斥锁必须是同一个对象,否则锁不住。
加锁:同步语句或者同步方法(这里用了同步语句)。解决交互线程与时间有关的错误。
注:互斥锁必须是同一个对象,否则锁不住。
public class save extends Thread{ private account a; private double value; public save(account a, double value) { this.a = a; this.value = value; } public void run() { synchronized (a) { double b = a.getBalance(); a.put(value); System.out.println(a.getName() + "账户,现有" + b + ",存入" + value + ",余额" + a.getBalance()); } } }
package cn.hncu.thread.motion; public class fetch extends Thread{ private account a; private double value; public fetch(account a, double value) { this.a = a; this.value = value; } public void run() { synchronized (a) {//拿锁 double b = a.getBalance(); System.out.println(a.getName() + "账户,现有" + b + ",取出" + a.get(value) + ",余额" + a.getBalance()); }//出了同步语句之后解锁 } }
package cn.hncu.thread.motion; public class bank { public static void main(String[] args) { // account a1=new account("wang"); // save s1=new save(a1,100); // save s1=new save(new account("wang"),100); // s1.start(); account a1=new account("wang"); new save(a1,100).start(); new save(a1,200).start(); new fetch(a1,300).start(); new save(new account("xu"),100).start(); } }
相关文章推荐
- java序列化和RMI
- Java对象转xml报文和xml报文转Java对象帮助类
- java synchronized详解
- JAVA写注册表
- JAVA获取资源的方法
- Codeforces 66A Petya and Java
- java调用可执行文件
- 自己动手实现Spring View
- [疯狂Java]数组:Arrays(数组工具类)
- JAVA琐碎笔记
- java操作<Map转换List——>list集合重新排序—>List集合转换成JSON>
- myeclipse常用快捷键
- myeclipse常用快捷键
- JAVA中字符集详解
- eclipse快捷键冲突解决办法
- Java--银行账户存取款线程设计1(交互线程)
- java发送email
- 【软件测试】Java中Selenium Webdriver的使用
- 创建完美SDK的10个技巧
- mybatis批量插入与批量更新。