文章目录
多个人转账发生死锁
- 多个人转账发生死锁
人数多的时候, 依然会发生死锁, 遵循墨菲定律. 虽然人多的时候发生死锁的几率不高, 但是危害大. 此节的代码中, 需要用到上一节的代码, 链接如下. https://javaweixin6.blog.csdn.net/article/details/108475207
此节的代码如下 : 定义账户的数组, 用于给不同的账户转账. 并且给每个账户赋初始值的钱为1000. 在TransferThread内部类中继承了Thread类, 重写run方法, 执行NUM_ITERATIONS次数的转账操作. 并且每次转账的收款方 , 转账方,转账金额都是随机的. 在run方法中调用TransferMoney.transferMoney
转账方法
接着开启NUM_THREADS个数(20个数)的线程去执行run方法中的任务
package com.thread.deadlock;
import java.util.Random;
/**
* 类名称:MultiTransferMoney
* 类描述: 多人转账发生死锁demo
*
* @author: https://javaweixin6.blog.csdn.net/
* 创建时间:2020/9/9 7:13
* Version 1.0
*/
public class MultiTransferMoney {
//账户的总数量
private static final int NUM_ACCOUNTS = 500;
//每个账户初始的余额
private static final int NUM_MONEY = 1000;
private static final int NUM_ITERATIONS = 1000000;
private static final int NUM_THREADS = 20;
public static void main(String[] args) {
Random random = new Random();
//定义转账的账户数组
TransferMoney.Account[] accounts = new TransferMoney.Account[NUM_ACCOUNTS];
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?