📄 demonstratedeadlock.java
字号:
package net.jcip.examples;import java.util.*;import net.jcip.examples.DynamicOrderDeadlock.Account;import net.jcip.examples.DynamicOrderDeadlock.DollarAmount;/** * DemonstrateDeadlock * <p/> * Driver loop that induces deadlock under typical conditions * * @author Brian Goetz and Tim Peierls */public class DemonstrateDeadlock { private static final int NUM_THREADS = 20; private static final int NUM_ACCOUNTS = 5; private static final int NUM_ITERATIONS = 1000000; public static void main(String[] args) { final Random rnd = new Random(); final Account[] accounts = new Account[NUM_ACCOUNTS]; for (int i = 0; i < accounts.length; i++) accounts[i] = new Account(); class TransferThread extends Thread { public void run() { for (int i = 0; i < NUM_ITERATIONS; i++) { int fromAcct = rnd.nextInt(NUM_ACCOUNTS); int toAcct = rnd.nextInt(NUM_ACCOUNTS); DollarAmount amount = new DollarAmount(rnd.nextInt(1000)); try { DynamicOrderDeadlock.transferMoney(accounts[fromAcct], accounts[toAcct], amount); } catch (DynamicOrderDeadlock.InsufficientFundsException ignored) { } } } } for (int i = 0; i < NUM_THREADS; i++) new TransferThread().start(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -