黑马程序员------学习笔记(7)多线程
来源:互联网 发布:dapaolu域名更换mp4 编辑:程序博客网 时间:2024/06/07 00:12
——- android培训、java培训、期待与您交流! ———-
使用Runnable接口实现多线程需要两个步骤,首先实现Runnable接口类,然后声明Thread实例,调用thread实例的start方法,开始执行。
/** * 张三跟他妻子去取款。 * 银行卡里有500,为了防止他们多取。那么,如果张三在取款, * 那么他妻子就需要等待,反之,张三需要等待。这里用到了(synchronized) * *有两个并发线程访问同一个银行账户对象中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 * * */public class Test { public static void main(String[] args) { TestAccout a = new TestAccout(); new Thread(a,"张三的妻子").start(); new Thread(a,"张三").start(); }}
//银行账户类public class Account {private int balanct = 500;//余额public int getBalanct() { return balanct;}public void setBalanct(int balanct) { this.balanct = balanct;}//计算余额public void withdraw(int amount){ balanct = balanct - amount;}}
/** * 取款线程类 * *RunTask类实现了Runnable的接口 *从java的Thread类继承实现多线程,也是实现其run方法,然后声明实例,并调用实例的start方法启动线程。 */public class TestAccout implements Runnable{ private Account acct = new Account(); @Override public void run() { for(int i=1;i<5;i++){ makeWithdrawal(100); if(acct.getBalanct()<0){ System.out.println("账户透支了!"); } } } private void makeWithdrawal(int amt){ //加锁 synchronized (acct) { if(acct.getBalanct()>=amt){ System.out.println(Thread.currentThread().getName()+"准备取款"); try { //0.5秒后实现取款 Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //如果余额足够则取款 acct.withdraw(amt); System.out.println(Thread.currentThread().getName()+"完成取款"); }else{ //余额不足给出提示 System.out.println("余额不足以支付"+ Thread.currentThread().getName()+"的取款,余额为:"+acct.getBalanct()); }} }}
——- android培训、java培训、期待与您交流! ———-
0 0
- 黑马程序员------学习笔记(7)多线程
- 黑马程序员--多线程学习笔记
- 黑马程序员----多线程学习笔记
- 黑马程序员-学习笔记-多线程
- 黑马程序员-多线程学习笔记
- 黑马程序员_学习笔记:7) 多线程、同步
- 黑马程序员---java多线程 学习笔记
- 黑马程序员——多线程学习笔记
- 黑马程序员_java多线程学习笔记
- 黑马程序员java学习笔记,多线程
- 黑马程序员-java学习笔记-多线程
- [黑马程序员]多线程_学习笔记9
- 黑马程序员_多线程学习笔记
- 黑马程序员—多线程学习笔记
- 黑马程序员_java多线程学习笔记
- 黑马程序员_学习笔记多线程
- 黑马程序员--学习笔记--多线程基础
- 黑马程序员_java学习笔记 6.多线程
- 第一课,读写文件
- 单向链表LinkedList的使用
- ThinkPHP框架研究之一 基本函数 M和D的区别
- ThinkPHP中M方法与D方法有什么区别
- 黑马程序员------学习笔记(6)集合
- 黑马程序员------学习笔记(7)多线程
- 辛星浅析邮件服务中的几个概念
- c# 加密算法集锦
- 黑马程序员------学习笔记(8)网络编程
- java 求二叉树的深度
- 请区别对待女程序员 .
- 咦,你也在混日子啊 .
- 那些害死程序员的细节 .
- 上课觉得刚好鬼离开家就很尴尬