Java
 Computer >> コンピューター >  >> プログラミング >> Java

スレッドはJavaでどのように相互に通信しますか?


スレッド間通信i スレッド同士の通信を含みます。 Javaでスレッド間通信を実装するために使用される3つの方法

wait()

このメソッドにより、現在のスレッドはロックを解放します 。これは、特定の時間が経過するか、別のスレッドが notify()を呼び出すまで行われます。 またはnotifyAll() このオブジェクトのメソッド。

notify()

このメソッドは単一のスレッドをウェイクアップします 現在のオブジェクトのモニター上の複数のスレッドから。スレッドの選択は任意です。

notifyAll()

このメソッドはすべてのスレッドをウェイクアップします 現在のオブジェクトのモニターにあります。

class BankClient {
   int balAmount = 5000;
   synchronized void withdrawMoney(int amount) {
      System.out.println("Withdrawing money");
      balAmount -= amount;
      System.out.println("The balance amount is: " + balAmount);
   }
   synchronized void depositMoney(int amount) {
      System.out.println("Depositing money");
      balAmount += amount;
      System.out.println("The balance amount is: " + balAmount);
      notify();
   }
}
public class ThreadCommunicationTest {
   public static void main(String args[]) {
      final BankClient client = new BankClient();
      new Thread() {
         public void run() {
            client.withdrawMoney(3000);
         }
      }.start();
      new Thread() {
         public void run() {
           client.depositMoney(2000);
         }
      }.start();
   }
}

出力

Withdrawing money
The balance amount is: 2000
Depositing money
The balance amount is: 4000

  1. JavaでJTableHeaderの各列にツールチップを設定するにはどうすればよいですか?

    JTableHeader JComponentのサブクラスです クラス、JTableオブジェクトを作成すると、コンストラクターは新しいJTableHeaderオブジェクトを作成して、テーブルコンポーネントのヘッダーを管理します 。 JTableはsetTableHeader()を提供します テーブルヘッダーコンポーネントのJTableHeaderオブジェクトとgetTableHeader()を確立するメソッド テーブルヘッダーコンポーネントのJTableHeaderオブジェクトへの参照を返すメソッド。 getToolTipText()をオーバーライドすることで、JTableHeaderの

  2. JavaでJTableの各列幅を変更するにはどうすればよいですか?

    JTable JTable JComponentのサブクラスです 複雑なデータ構造を表示するため。 JTable Model View Controller(MVC)デザインパターンに従うことができます 行にデータを表示するため および列 。 DefaultTableModel クラスはAbstractTableModelを拡張できます また、行と列を JTableに追加するために使用できます。 動的に。 DefaultTableCellRenderer クラスはJLabelを拡張できます クラスであり、画像を追加するために使用できます 、色付きのテキスト J