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

JavaのRunnableインターフェースとCallableインターフェースの違い


RunnableとCallableの両方の機能インターフェイス。これらのインターフェースを実装しているクラスは、別のスレッドによって実行されるように設計されています。

スレッドはRuunableで開始でき、新しいスレッドを開始する2つの方法があります。1つはThreadクラスをサブクラス化する方法で、もう1つはRunnableインターフェイスを実装する方法です。

スレッドクラスには呼び出し可能なコンストラクタがないため、スレッドの実行にはExecutorServiceクラスを使用する必要があります。

Sr。いいえ。 キー 実行可能 呼び出し可能
1
パッケージ
Java.langに属しています
java.util.concurrentに属しています
2
スレッドの作成
runnableをパラメーターとして渡すことで、スレッドを作成できます。
callableをパラメータとして渡してスレッドを作成することはできません
3
リターンタイプ
Ruunableは何も返しません
Callableは結果を返すことができます
4。
メソッド
run()メソッドがあります
call()メソッドがあります
5
一括実行
タスクの一括実行には使用できません
invokeAll()を呼び出すことにより、タスクの一括実行に使用できます。

ランナブルの例

public class RunnableExample implements Runnable {
   public void run() {
      System.out.println("Hello from a Runnable!");
   }
   public static void main(String args[]) {
      (new Thread(new RunnableExample())).start();
   }
}

呼び出し可能の例

public class Main {
   public static void main(String args[]) throws InterruptedException, ExecutionException {
      ExecutorService services = Executors.newSingleThreadExecutor();
      Future<?> future = services.submit(new Task());
      System.out.println("In Future Object" + future.get());
   }
}
import java.util.concurrent.Callable;

public class Task implements Callable {

   @Override
   public String call() throws Exception {
      System.out.println("In call");
      String name = "test";
      return name;
   }
}

  1. JavaのQueueインターフェイスのpeek()、poll()、remove()メソッドの違いは?

    これは、処理前にデータを保持するためにインデントされたコレクションを表します。これは、先入れ先出し(FIFO)タイプの配置です。キューに入れられた最初の要素は、キューから取り出された最初の要素です。 peek()メソッド このメソッドは、オブジェクトを削除せずに、現在のキューの先頭にあるオブジェクトを返します。キューが空の場合、このメソッドはnullを返します。 例 import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; public class QueueExample {  

  2. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり