Java 虛擬類和線程是 Java 編程中非常重要的概念。Java 虛擬類是一個抽象的概念,它不是真正存在的一種類,而是虛擬存在的類,用于規(guī)范和定義類的行為。線程是指程序中獨立運行的代碼段,它有自己的執(zhí)行順序、執(zhí)行狀態(tài)和執(zhí)行控制。Java 的多線程編程是非常重要和常見的,我們需要掌握 Java 中的線程機制和相關(guān)知識。
// 一個簡單的 Java 程序,用于演示線程的基本操作 class MyThread implements Runnable { public void run() { System.out.println("線程正在運行..."); } } class Main { public static void main(String[] args) { MyThread t = new MyThread(); Thread thread = new Thread(t); thread.start(); } }
上面的代碼演示了如何創(chuàng)建一個線程并啟動它。我們先定義了一個實現(xiàn)了 Runnable 接口的類 MyThread,在類中實現(xiàn)了 run 方法,這個方法就是線程執(zhí)行的代碼。在 main 函數(shù)中,我們創(chuàng)建了 MyThread 的實例 t,并將其作為參數(shù)傳遞給了一個 Thread 類的實例 thread。調(diào)用 thread 的 start 方法,就可以啟動線程。
// 使用 synchronized 關(guān)鍵字實現(xiàn)同步 class Account { private int balance; public Account(int balance) { this.balance = balance; } public synchronized void withdraw(int amount) { if (balance< amount) { System.out.println("余額不足!"); } else { balance -= amount; System.out.println("取款 " + amount + " 元,余額為 " + balance + " 元"); } } } class WithdrawRunnable implements Runnable { private Account account; private int amount; public WithdrawRunnable(Account account, int amount) { this.account = account; this.amount = amount; } public void run() { account.withdraw(amount); } } class Main { public static void main(String[] args) { Account account = new Account(1000); WithdrawRunnable r1 = new WithdrawRunnable(account, 800); WithdrawRunnable r2 = new WithdrawRunnable(account, 800); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); } }
上面的代碼實現(xiàn)了一個簡單的銀行賬戶取款程序,并使用 synchronized 關(guān)鍵字實現(xiàn)了同步。在 Account 類的 withdraw 方法中,我們用 synchronized 關(guān)鍵字修飾了方法,這樣就實現(xiàn)了同步。在 main 函數(shù)中,我們創(chuàng)建了兩個 WithdrawRunnable 的實例 r1 和 r2,并將其分別傳遞給了兩個線程 t1 和 t2。由于這兩個線程是同時運行的,所以在取款時必須要實現(xiàn)同步。