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线程模拟银行取款_多线程模拟银行取款相关推荐

  1. java线程 cpu占用率_多线程程序 怎样查看每个线程的cpu占用

    可以用下面的命令将 cpu 占用率高的线程找出来: ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu 这个命令首先指定参数'H',显示线程相关的 ...

  2. java 线程间变量共享_多线程:(五)多个线程之间共享数据

    简单的总结一下多线程共享数据的方式.其实,最重要的,是一个思想,一个面向对象的编程思想的建立. 说两点: 一.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中 ...

  3. java线程中的常用方法_[多线程] 线程中的常用方法-最详细

    线程中常用的方法 1.public void start() 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 2.public void run() 如果该线程是使用独立的 Runna ...

  4. java线程池读文件_多线程读取Java文件

    我正在创建线程以读取Java中的文件.当我创建2个线程时,每个线程都读取整个文件,而我希望它们读取文件的不同部分.我尝试放入sleep(),join(),yield(),但是在包含它们之后,这只会减慢 ...

  5. java 线程访问控件_多线程下访问控件的方式

    前言 在很多情况下,我们都会使用到多线程,在使用多线程的时候,我们很多时候又会去访问控件,这里面就会出现很多问题!!!我以一个最常见的,我们经常会用到的例子来讲讲,在提高自己水平的同时,希望能给大家带 ...

  6. java如何做测试数据库_如何模拟用于测试的数据库(Java)?

    我在Java编程,我的应用程序正在做很多使用DB.因此,重要的是我能够轻松地测试我的数据库使用. 什么是数据库测试?对我来说,他们应该提供两个简单的要求: >验证SQL语法. >更重要的是 ...

  7. 关于java线程同步的笔记_线程同步(JAVA笔记-线程基础篇)

    在多线程应用程序中经常会遇到线程同步的问题.比如:两个线程A.线程B可能会 "同时" 执行同一段代码,或修改同一个变量.而很多时候我们是不希望这样的. 这时候,就需要用到线程同步. ...

  8. java 线程池 初始大小_为什么tomcat的默认线程池大小如此之大? - java

    我注意到默认的tomcat 7线程池大小似乎是200. 但是普通的CPU似乎有16个内核. 因此只能并行执行16个线程 为什么tomcat使用那么多线程. 参考方案 多年以来,许多单核计算机问世,并且 ...

  9. java 线程 状态 图_Java提高——多线程(一)状态图

    操作系统中的进程和线程的概念 进程是指一个内存运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程,比如windows下的一个运行的应用程序.exe就是一个进程. 线程是指进 ...

最新文章

  1. 【29.42%】【POJ 1182】食物链
  2. Ueditor富文本编辑器
  3. WLAN高密无线网络部署的信道问题
  4. 在.NET Core 中收集数据的几种方式
  5. 网页缩放与窗口缩放_功能缩放—不同的Scikit-Learn缩放器的效果:深入研究
  6. 在线邮箱订阅反馈html5模板
  7. python序列化模块struct_Python-序列化模块-json-62
  8. Exchange Server 2007迁移Exchange Server 2010 (15)---启用Outlook anywhere
  9. 关于onclick中的event对象和element对象
  10. idea创建jsp项目并运行
  11. 小米手机怎么复制加密门禁卡_使用小米手机复制加密门禁卡的方法
  12. idea破解失败无法打开
  13. 板内板间通信协议及接口(七)现场总线及modbus协议
  14. 单个html页面面包屑,总结11个网页面包屑设计技巧
  15. 实验吧——安全杂项之“Snake”详解
  16. 微观经济学之供给与需求--第一章第二章
  17. 部署超级账本fabric区块可视化浏览器
  18. WPF自学手册-读书笔记(三)小有所成
  19. 北京进一步强化节能实施,能耗监测、余热回收等为数据中心重点
  20. css中审核图标,一个简单实用的css loading图标

热门文章

  1. 混凝土搅拌站计算机控制系统,一种混凝土搅拌站自动控制系统
  2. 手机VPN的连接方法分享
  3. Linux驱动学习--音频传输之I2S接口时序的配置
  4. 行高和高度的三两事:行高 > 高度 文字靠下;行高 < 高度 文字靠上
  5. 脚本语言有哪些,如JavaScript、Scala、Python
  6. 为什么练习记忆扑克牌
  7. Python学生通讯录管理系统案例(文件版)
  8. BTchat链语社交软件 重新定义你的私密社交
  9. 芋道源码的周八(2018.02.04)
  10. 简析几何叉乘与安培力的内在逻辑