java 线程同步方法执行与唤醒实例
2019-10-25 06:35:20来源:博客园 阅读 ()
java 线程同步方法执行与唤醒实例
账号提钱、存钱实例方法
public class Account { private int balance; private int maxBalance; public Account(int balance) { this.balance=balance; } //同步方法 取钱 public synchronized void transferOut(int money) { //线程同步 //synchronized(this) { String theadName=Thread.currentThread().getName(); if(balance>money) { try { Thread.sleep(1); }catch(InterruptedException e ){ e.printStackTrace(); } balance=balance-money; System.out.println(theadName+"转走:"+money+",余额:"+balance); }else { System.out.println(Thread.currentThread().getName()+"余额不足"); } // } } //同步方法 线程等待 存钱 public synchronized void save(int money) { while(balance+money>maxBalance) { try { this.wait(); //线程等待 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } String theadName=Thread.currentThread().getName(); balance=balance+money; System.out.println( "save "+money+"元"+" balance:"+balance); this.notifyAll();//唤醒其它线程 } //同步方法 线程等待 存钱 public synchronized void withdraw(int money) { while(money>balance) { try { this.wait(); //线程等待 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } balance=balance-money; System.out.println( "take "+money+"元"+" balance:"+balance); this.notifyAll();//唤醒其它线程 } }
测试方法
public class Test { public static void main(String[] args) { Account account2=new Account(8000); Thread t1=new Thread(new TakeMoney(account2),"son1"); Thread t2=new Thread(new TakeMoney(account2),"son2"); t1.start(); t2.start(); } }
原文链接:https://www.cnblogs.com/personblog/p/11703760.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash