您当前的位置: 首页 >  Java

java持续实践

暂无认证

  • 2浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java多线程 多个人转账发生死锁

java持续实践 发布时间:2020-09-09 07:55:06 ,浏览量:2

文章目录
      • 多个人转账发生死锁

多个人转账发生死锁

人数多的时候, 依然会发生死锁, 遵循墨菲定律. 虽然人多的时候发生死锁的几率不高, 但是危害大. 此节的代码中, 需要用到上一节的代码, 链接如下. 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             
关注
打赏
1658054974
查看更多评论
0.0386s