• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::

            import java.util.concurrent.locks.Condition;

            import java.util.concurrent.locks.ReentrantLock;


            public class Test1 {


                public static void main(String[] args) {

                    Bank bank = new Bank(10, 500); // Shared data.

                    for (int i = 0; i < bank.size(); ++i) {

                        BankTransfer bt = new BankTransfer(bank, i, 500);

                        Thread thread = new Thread(bt);

                        thread.start();

                    }

                }

            }


            class Bank {

                private ReentrantLock lock;

                private Condition condition;

                private double[] accounts;


                public Bank(int n, double initialBalance) {

                    accounts = new double[n];

                    for (int i = 0; i < accounts.length; i++) {

                        accounts[i] = initialBalance;

                    }


                    lock = new ReentrantLock();

                    condition = lock.newCondition();

                }


                public int size() {

                    return accounts.length;

                }


                public double getTotalBalance() {

                    double totalBalance = 0;


                    lock.lock();

                    try {

                        for (int i = 0; i < accounts.length; ++i) {

                            totalBalance += accounts[i];

                        }

                    } finally {

                        lock.unlock();

                    }


                    return totalBalance;

                }


                public void transfer(int from, int to, double amount) {

                    lock.lock();

                    try {

                        while (accounts[from] < amount) {

                            condition.await();

                        }

                        System.out.print(Thread.currentThread());

                        accounts[from] -= amount;

                        accounts[to] += amount;

                        System.out.print("\t" + amount + " from " + from + " to " + to);

                        System.out.println("\tTotal balance: " + getTotalBalance());


                        condition.signalAll();

                    } catch (InterruptedException e) {


                    } finally {

                        lock.unlock();

                    }

                }

            }


            class BankTransfer implements Runnable {

                private Bank bank;

                private int fromAcount;

                private double maxAmount;


                public static final int DELAY = 4000;


                public BankTransfer(Bank bank, int fromAcount, double maxAmount) {

                    this.bank = bank;

                    this.fromAcount = fromAcount;

                    this.maxAmount = maxAmount;

                }


                public void run() {

                    try {

                        while (true) {

                            int toAcount = (int) (bank.size() * Math.random());

                            int amount = (int)(maxAmount * Math.random());

                            bank.transfer(fromAcount, toAcount, amount);


                            Thread.sleep((int) (DELAY * Math.random()));

                        }

                    } catch (InterruptedException e) {

                    }

                }

            }

            轉(zhuǎn)帳是由BankTransfer類去用多線程完成的, Bank類并沒有去實現(xiàn)Runnable接口.


            posted on 2009-06-28 16:16 逛奔的蝸牛 閱讀(979) 評論(0)  編輯 收藏 引用 所屬分類: Java
            国产精品成人99久久久久| 久久久精品久久久久特色影视| 99精品国产综合久久久久五月天| 精品久久久久久无码不卡| 亚洲精品乱码久久久久久中文字幕| 国产V亚洲V天堂无码久久久| 91精品婷婷国产综合久久| 精品国产乱码久久久久久浪潮| 久久中文字幕视频、最近更新| 亚洲AV日韩AV永久无码久久| 伊人久久精品线影院| 久久久精品国产免大香伊| 99国内精品久久久久久久| 麻豆精品久久久久久久99蜜桃| 免费精品99久久国产综合精品| 亚洲第一永久AV网站久久精品男人的天堂AV | 欧美黑人激情性久久| 久久亚洲AV成人无码电影| 久久婷婷五月综合97色一本一本| 午夜不卡888久久| 久久久无码精品亚洲日韩蜜臀浪潮| 精品久久久久久无码国产| WWW婷婷AV久久久影片| 国产免费久久精品99re丫y| 久久www免费人成精品香蕉| jizzjizz国产精品久久| 亚洲狠狠婷婷综合久久久久| 久久久久一级精品亚洲国产成人综合AV区 | 国色天香久久久久久久小说 | 国产精品中文久久久久久久| 国产成人综合久久精品尤物| 国内精品人妻无码久久久影院 | 国产精品一区二区久久精品涩爱| 日韩精品久久久久久| 久久99热狠狠色精品一区| 久久天堂AV综合合色蜜桃网 | 一97日本道伊人久久综合影院| 国产精品成人久久久久三级午夜电影| 亚洲精品美女久久777777| 波多野结衣AV无码久久一区| 亚洲国产精品无码久久一区二区 |