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; } }
-
JavaのQueueインターフェイスのpeek()、poll()、remove()メソッドの違いは?
これは、処理前にデータを保持するためにインデントされたコレクションを表します。これは、先入れ先出し(FIFO)タイプの配置です。キューに入れられた最初の要素は、キューから取り出された最初の要素です。 peek()メソッド このメソッドは、オブジェクトを削除せずに、現在のキューの先頭にあるオブジェクトを返します。キューが空の場合、このメソッドはnullを返します。 例 import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; public class QueueExample {  
-
JavaでのArrayListとHashSetの違い
HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり