java线程模拟银行取款_多线程模拟银行取款
packagetestsynchrozied;/*** 功能:多个用户同时对一个账户取款
* 使用线程的同步
*
* 1.设计一个账户类 余额,取款,显示余额
* 2.取款的线程
* 3.用户同时取款
*
* 解决方案1:同步代码块 synchronized(account){ .... }
*
* 总结:1.认识同步监视器 account
* synchronized(同步监视器){ ... }
* 1.必须是引用类型的数据,不能是基本数据类型
* 2.在同步代码块中,不要改变引用类型数据的值,属性的值可以修改
* 3.尽量不要使用String 和 包装类做同步监视器,除非代码块中不会改变其内容
* 4.一般是使用共享资源作为同步监视器 (account)
* 5.可以新建一个专门的同步监视器 Object 没有具体的业务含义
*
* 2.之前见过的同步监视器
* StringBuffer Hashtabale vector
*
* 3.同步代码块的执行过程
* 1.第一个线程来到同步代码块,发现同步监视器是open状态,需要close,进去执行里面的代码
* 2.执行里面的代码发生了一些情况 ,切换(阻塞,就绪),第一个线程失去cpu,锁 还是close
* 3.第二个线程来到同步代码块,发现同步监视器是close状态,无法执行,其中的代码也不能执行,
* 第二个线程进入阻塞状态
* 4.第一个线程再次获取cpu,接着执行后续代码,执行完毕,锁 open 第一个线程进入死亡状态
* 5.第二个线程再次获取cpu,又同步代码块,发现锁是open状态,执行后续代码.重复第一个线程的过程
*
* 4.线程同步的有点和缺点
* 优点:安全
* 缺点:效率低下,有可能出现死锁
*
* 5.多个同步代码块使用的是同一个同步监视器(锁),锁住其中一个代码块同时也会锁住其它的所有使用该同步监视器(锁)代码块
* 其它线程无法访问其中任何一个代码块
* 但是没有锁住其它的同步监视器代码块*/
public classTestSynchronized {public static voidmain(String[] args) {
AccountRunnable ar= newAccountRunnable();
Thread th1= newThread(ar);
th1.setName("Drew");
Thread th2= newThread(ar);
th2.setName("Super");
th1.start();
th2.start();
}
}
java线程模拟银行取款_多线程模拟银行取款相关推荐
- java线程 cpu占用率_多线程程序 怎样查看每个线程的cpu占用
可以用下面的命令将 cpu 占用率高的线程找出来: ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu 这个命令首先指定参数'H',显示线程相关的 ...
- java 线程间变量共享_多线程:(五)多个线程之间共享数据
简单的总结一下多线程共享数据的方式.其实,最重要的,是一个思想,一个面向对象的编程思想的建立. 说两点: 一.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中 ...
- java线程中的常用方法_[多线程] 线程中的常用方法-最详细
线程中常用的方法 1.public void start() 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 2.public void run() 如果该线程是使用独立的 Runna ...
- java线程池读文件_多线程读取Java文件
我正在创建线程以读取Java中的文件.当我创建2个线程时,每个线程都读取整个文件,而我希望它们读取文件的不同部分.我尝试放入sleep(),join(),yield(),但是在包含它们之后,这只会减慢 ...
- java 线程访问控件_多线程下访问控件的方式
前言 在很多情况下,我们都会使用到多线程,在使用多线程的时候,我们很多时候又会去访问控件,这里面就会出现很多问题!!!我以一个最常见的,我们经常会用到的例子来讲讲,在提高自己水平的同时,希望能给大家带 ...
- java如何做测试数据库_如何模拟用于测试的数据库(Java)?
我在Java编程,我的应用程序正在做很多使用DB.因此,重要的是我能够轻松地测试我的数据库使用. 什么是数据库测试?对我来说,他们应该提供两个简单的要求: >验证SQL语法. >更重要的是 ...
- 关于java线程同步的笔记_线程同步(JAVA笔记-线程基础篇)
在多线程应用程序中经常会遇到线程同步的问题.比如:两个线程A.线程B可能会 "同时" 执行同一段代码,或修改同一个变量.而很多时候我们是不希望这样的. 这时候,就需要用到线程同步. ...
- java 线程池 初始大小_为什么tomcat的默认线程池大小如此之大? - java
我注意到默认的tomcat 7线程池大小似乎是200. 但是普通的CPU似乎有16个内核. 因此只能并行执行16个线程 为什么tomcat使用那么多线程. 参考方案 多年以来,许多单核计算机问世,并且 ...
- java 线程 状态 图_Java提高——多线程(一)状态图
操作系统中的进程和线程的概念 进程是指一个内存运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程,比如windows下的一个运行的应用程序.exe就是一个进程. 线程是指进 ...
最新文章
- 【29.42%】【POJ 1182】食物链
- Ueditor富文本编辑器
- WLAN高密无线网络部署的信道问题
- 在.NET Core 中收集数据的几种方式
- 网页缩放与窗口缩放_功能缩放—不同的Scikit-Learn缩放器的效果:深入研究
- 在线邮箱订阅反馈html5模板
- python序列化模块struct_Python-序列化模块-json-62
- Exchange Server 2007迁移Exchange Server 2010 (15)---启用Outlook anywhere
- 关于onclick中的event对象和element对象
- idea创建jsp项目并运行
- 小米手机怎么复制加密门禁卡_使用小米手机复制加密门禁卡的方法
- idea破解失败无法打开
- 板内板间通信协议及接口(七)现场总线及modbus协议
- 单个html页面面包屑,总结11个网页面包屑设计技巧
- 实验吧——安全杂项之“Snake”详解
- 微观经济学之供给与需求--第一章第二章
- 部署超级账本fabric区块可视化浏览器
- WPF自学手册-读书笔记(三)小有所成
- 北京进一步强化节能实施,能耗监测、余热回收等为数据中心重点
- css中审核图标,一个简单实用的css loading图标