
本文共 5936 字,大约阅读时间需要 19 分钟。
Java������������
���Java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
1. ���������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
2. ������������������
������������������������������������������������������������������������������������������������������
Account
������������������������������������������DrawThread
������������ Runnable
���������������������������������������������������Threadbank
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
3. ���������������������������
������������������������������������������������������������������������������������������������������������������
��������������� join()
������
join()
������������������������������������������������������������������������������������������������ join
������������������������������������������������������������������������������������������
public class Threadbank { public static void main(String[] args) { Account account = new Account("WHQ", 1000); Thread t1 = new Thread(new DrawThread(account, 800), "���"); Thread t2 = new Thread(new DrawThread(account, 800), "���"); t1.start(); try { t1.join(); // ��������������������� } catch (InterruptedException e) { e.printStackTrace(); } t2.start(); try { t2.join(); // ��������������������� } catch (InterruptedException e) { e.printStackTrace(); } }}
������������������������������������������������������������������������������������������������������������������
��������������� synchronized
���������
synchronized
���������������������������������������������������������������������������������������������������������
���������������������������������
��� synchronized
������������������������������������
class Account { // ��������������������������������� public synchronized void draw(double drawAmount) { // ������������������ if (balance >= drawAmount) { System.out.println(Thread.currentThread().getName() + " ���������������������������" + drawAmount); balance -= drawAmount; System.out.println("\t������ :" + balance); } else { System.out.println(Thread.currentThread().getName() + " ���������������������������!"); } }}
������������������������������
��� synchronized
������������������������
class Account { // ��������������������������������� public synchronized void draw(double drawAmount) { // ������������������ if (balance >= drawAmount) { System.out.println(Thread.currentThread().getName() + " ���������������������������" + drawAmount); balance -= drawAmount; System.out.println("\t������ :" + balance); } else { System.out.println(Thread.currentThread().getName() + " ���������������������������!"); } }}
������������������������������������������������ synchronized
��������������������������������������� static
��������������� synchronized
������������������������������������������������������������������������������������������������
4. ���������������������������
synchronized
���������������������������������������������������������synchronized
���������������������������������������������������
������������������������ synchronized
��������� join()
���������������������������������������������������������
5. ������������������
������������������������������
class Account { private String accountNo; private double balance; public String getAccountNo() { return accountNo; } public double getBalance() { return balance; } public Account(String accountNo, double balance) { this.accountNo = accountNo; this.balance = balance; } public synchronized void draw(double drawAmount) { if (balance >= drawAmount) { System.out.println(Thread.currentThread().getName() + " ���������������������������" + drawAmount); balance -= drawAmount; System.out.println("\t������ :" + balance); } else { System.out.println(Thread.currentThread().getName() + " ���������������������������!"); } }}class DrawThread implements Runnable { private Account account; private double drawAmount; public DrawThread(Account account, double drawAmount) { this.account = account; this.drawAmount = drawAmount; } @Override public void run() { account.draw(drawAmount); }}public class Threadbank { public static void main(String[] args) { Account account = new Account("WHQ", 1000); Thread t1 = new Thread(new DrawThread(account, 800), "���"); Thread t2 = new Thread(new DrawThread(account, 800), "���"); t1.start(); t2.start(); }}
6. ������������
- ������������������������������������������������������������������
- ���������������������
- ���������������������
- ���������������������������������������������������������������
7. ������
������synchronized
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
