栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 核心技术(第八版)卷1:基础知识:例14-5P632UnsynchBankTest

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 核心技术(第八版)卷1:基础知识:例14-5P632UnsynchBankTest

这个例子是要说明当多个线程访问同一个数据的时候,会出错。原来是while(true)这样会导致程序一直运行,我改为了 运行100 次,已经可以看出来这个时候就已经出错了。

import java.lang.Thread;
//本程序演示了数据是如何发生混乱的,当多个线程访问同一个数据结构的时候
public class UnsynchBankTest {
    public static void main (String []args)
    {
        Bank b=new Bank(NACCOUNT,INITIAL_BALANCE);
        int i;
        for(i=0;i 
//银行,带有很多个账户
public class Bank {
    public Bank(int n,double initialBalance)
    {
        accounts=new double[n];
                for(int i=0;i

import java.lang.*;
// 一个runnable  把钱从一个账户转入到另外一个账户

public class TransferRunnable implements Runnable{
    public TransferRunnable(Bank b,int from,double max)
    {
        bank=b;
        fromAccount=from;
        maxAmount=max;

    }
    public void run()
    {
        try
        {
            int ii=0;
            while (ii<100)//原文是true 造成该程序永远不停止,实在是没有必要了
            {
                ii++;
                int toAccount=(int) (bank.size()*Math.random());
                double amount=maxAmount*Math.random();
                bank.transfer(fromAccount,toAccount,amount);
                Thread.sleep((int)(DELAY*Math.random()));
            }
        }
        catch(InterruptedException e)
        {

        }

    }
    private Bank bank;
    private int fromAccount;
    private double maxAmount;
    private int DELAY=10;

}

运行结果(100个结果,我只截取了片段):

Thread[Thread-4,5,main]Thread[Thread-2,5,main]      7.01 from 4 to 59Thread[Thread-5,5,main]Thread[Thread-0,5,main]    752.87 from 0 to 98Total Balance:  98941.40
Thread[Thread-3,5,main]    528.42 from 3 to 72Thread[Thread-1,5,main]    356.98 from 1 to 59Total Balance:  98941.40


     98.44 from 5 to 46Total Balance:  99039.84

Total Balance:  99039.84

所有Balance 不是10000的 都是出错的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/966714.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号