使用Java多线程的同步机制编写应用程序 PDF 下载

本站整理下载:

相关截图:

主要内容:

一. 实验名称

使用Java多线程的同步机制编写应用程序

二. 实验目的及要求

1.理解并行/并发的概念及其应用场景。

2.理解同步/异步的概念及其应用场景。

3.掌握多线程的同步机制。

三. 实验环境

硬件平台:个人计算机

软件:Windows10

操作系统:Eclipse

四. 实验内容

根据要求,编写应用程序。要求如下:

1.模拟银行账户,两个以上的用户同时进行存、取操作。

2.银行有一个账户,有两个用户分别向同一个账户存3000元,每次存1000,存三次。

3.余额大于取款金额才可取钱

4.多人多次存取完毕后,余额正常

5.当一个用户对金额进行修改时,其他用户应不可进行修改,使用同步机制。

五.实验过程及实验结果

新建bank类,创建三个class:sum(钱总数)、save(存钱)、get(取钱),代码如下:

import java.util.Random;

public class bank {

public static void main(String[] args) {

double money = 0;

sum s = new sum(money);

save savePeople = new save(s);

get getPeople = new get(s);

Thread save1 = new Thread(savePeople, "欣欣");

Thread save2 = new Thread(savePeople, "小小");

Thread get1 = new Thread(getPeople, "亮亮");

Thread get2 = new Thread(getPeople, "猪猪");

Thread get3 = new Thread(getPeople, "皮皮");

save1.start();

save2.start();

get1.start();

get2.start();

get3.start();

}

}

/*钱总数*/

class sum{

double money;

public sum(double money) {

this.money = money;

}

}

/*存钱*/

class save implements Runnable{

sum s;

int num = 3;

public save(sum s) {

this.s = s;

}

@Override

public void run() {

//每次存一千,共存三次

while(true) {

synchronized (s) {

if(num == 0) {

break;

}

else {

num--;

s.money += 1000;

System.out.print(Thread.currentThread().getName() + "存了1000元钱");

System.out.println("------余额: " + s.money);

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

}

s.notifyAll();

}//synchronized

}//while

}

}

/*取钱*/

class get implements Runnable{

sum s;

public get(sum s) {

this.s = s;

}

@Override

public void run() {

while(true) {

synchronized (s) {

if(s.money == 0) {

try {

s.wait();

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

}

//1.随机生成取钱的数额

Random random = new Random();

int getmoney = random.nextInt(3000);

//2.余额>=要取的钱才能取钱,否则将剩余的钱全部取走

if(s.money>=getmoney) {

s.money -=getmoney;

System.out.print(Thread.currentThread().getName() + "取走了"+ getmoney +"元钱");

System.out.println("------余额: " + s.money);

}

else if(s.money!=0){

s.money = 0;

System.out.print(Thread.currentThread().getName() + "取走了剩余的钱");

System.out.println("------余额: " + s.money);

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

}//synchronized

}//while

}

}

java实验多线程机制_使用Java多线程的同步机制编写应用程序 PDF 下载相关推荐

  1. java实验四云南大学_云南大学JAVA程序设计实验四

    云南大学JAVA程序设计实验 云南大学软件学院 实 验 报 告 序 号: 实验老师: 陆歌皓 课程名称: JAVA程序设计实验 实验名称: lab4 学 号: 20111120279 姓 名: 李张昱 ...

  2. java 编程之美_《编程之美—微软技术面试心得》PDF 下载

    第1章 游戏之乐--游戏中碰到的题目 1.1 让CPU占用率曲线听你指挥 1.2 中国象棋将帅问题 1.3 一摞烙饼的排序 1.4 买书问题 1.5 快速找出故障机器 1.6 饮料供货 1.7 光影切 ...

  3. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  4. java实验报告11:JDBC与多线程综合案例

    一.实验目的:[目的要求] 了解JDBC 掌握JDBC驱动接口 掌握多线程编程 [注意事项] 注意电源插座的用电安全: 遵守计算机的使用注意事项: 防范病毒. 二. [使用工具] 电脑 window系 ...

  5. java 多线程状态_总结Java中线程的状态及多线程的实现方式

    线程的状态线程状态图: 说明: 线程共包括以下5种状态. 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 2. 就绪 ...

  6. java死锁业务场景_【深入浅出多线程系列十二】:什么是死锁?(场景+代码示例)...

    在学习Java的道路上,是否路过多线程时总让你很迷惘:很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践.所以我决定漫步Java多线程,同你一起会会多线程. 多线程系列 多线 ...

  7. java 多线程 临界区_【Java并发性和多线程】竞态条件与临界区

    本文为转载学习 在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源.如,同一内存区(变量,数组,或对象).系统(数据库,web services等)或文件.实际上,这些问题只有 ...

  8. 西电java实验报告 界面_西电计算机Java上机实验报告.docx

    西电计算机Java上机实验报告.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  9. java提供两种处理异常的机制_浅析Java异常处理机制

    关于异常处理的文章已有相当的篇幅,本文简单总结了Java的异常处理机制,并结合代码分析了一些异常处理的最佳实践,对异常的性能开销进行了简单分析. 博客另一篇文章<[译]Java异常处理的最佳实践 ...

最新文章

  1. 威尔逊定理 ---- [hdu-6608] Fansblog 威尔逊定理 质数的密度分布 快速乘优化快速幂防止中间爆longlong
  2. 制药行业智能化发展现状趋势及建议
  3. c语言课设代写一般多少钱_结婚彩礼一般多少钱 2019彩礼会涨到多少钱
  4. virtualenvvirtualenvwrapper on WindowsUbuntu
  5. 第二次结对编程作业——毕设导师智能匹配
  6. php sql语句计算距离,sql计算经纬度得出最近距离的公式
  7. MySQL 5.6 dump/load buffer pool实验
  8. Python如何提取docx中的超链接
  9. KS(Kolmogorov–Smirnov)模型区分能力指标
  10. 基于JavaWeb的高校试题库管理系统设计与实现 毕业论文+项目源码及数据库文件、
  11. Javascript验证身份证号码:正则表达式
  12. css样式的灵异事件
  13. 弹出visual studio 实时调试器解决
  14. Linux无线网卡配置 intel 9462 网卡 速度无法超过54Mbit
  15. OpenGL入门学习[二] 绘制简单的几何图形
  16. PowerBI-时间智能函数-ENDOF系列
  17. ffmpeg库 pycharm_python+ffmpeg让字符跳动起来
  18. [Julia语言]使用Chudnovsky 算法快速计算圆周率 Pi (π) 值
  19. ubuntu安装截图工具 flameshot(对标windows下snipaste)
  20. 编译binutils、zlib

热门文章

  1. CPU Cache Line:CPU缓存行/缓存块
  2. 【燕郊】【2015-12-31】【知乎】
  3. 2019.03.17 14:58
  4. Python项目实践:绘制玫瑰花
  5. wmic cpu get processorid获取的都一样_DJL 之 Java 玩转多维数组,就像 NumPy 一样
  6. 动态打字效果 html,html5 svg酷炫的打字动画特效
  7. 把本地的jar包打包到maven本地仓库里
  8. Unity URP一分钟实现遮挡透视
  9. mysql5.7安装完成后密码是多少_安装了mysql5.7后,如何进行配置(密码等)初始化...
  10. 记录MS SQL Server数据库