ホームページ  >  記事  >  Java  >  Javaのスレッドの特徴と使い方は何ですか

Javaのスレッドの特徴と使い方は何ですか

王林
王林転載
2023-05-20 12:07:291458ブラウズ

プロセスには複数のスレッドを含めることができます。スレッドはプロセスのコンポーネントです。各スレッドは、それが属するプロセスに依存する必要があります。スレッドにはプライベート スタック、プログラム カウンター、およびローカル変数がありますが、システム リソースを所有することはできません。プロセスのすべてのリソースを親プロセスの他のスレッドと共有します。

スレッドの特性:

スレッドは特定のタスクを完了し、共有変数と親プロセスの環境の一部を他のスレッドと共有し、互いに協力してタスクを完了できます。

スレッドは独立して実行され、プロセス内に他のスレッドが存在するかどうかはわかりません。

スレッドの実行はプリエンプティブです。つまり、現在実行中のスレッドは、別のスレッドを実行するためにいつでも一時停止される可能性があります。

スレッドは別のスレッドを作成またはキャンセルでき、プロセス内の複数のスレッドを同時に実行できます。

2: スレッドの作成と使用

Java は、スレッドを表すために Thread クラスを使用します。すべてのスレッド オブジェクトは、Thread またはそのサブクラスのインスタンスである必要があります。各スレッドの役割は、特定のタスクを完了することです。 . 、実際には、プログラム フロー (順番に実行されるコードの一部) を実行するためです。

#オプション 1: Thread クラスを継承し、スレッド クラスを作成します

手順:

1. Thread クラスのサブクラスを定義し、クラスの Run メソッドを書き換えます。run メソッドのメソッド本体は、スレッドが完了する必要があるタスクを表します

2. Thread クラスのインスタンス、つまり Thread オブジェクトを作成します

3. スレッドの start メソッドを呼び出してスレッドを開始します

Javaのスレッドの特徴と使い方は何ですか

Javaのスレッドの特徴と使い方は何ですか#結論: 継承されたスレッドを使用してスレッド クラスをクラスのサブクラスとして作成する場合、複数のスレッドは変数 i

## などのスレッド クラスのインスタンス変数を共有できません。

# 上記の解決策 2: Runnable インターフェイスを実装する

#1: Runnable インターフェイスの実装クラスを定義し、その Run メソッドを書き換えます。run メソッドはスレッドの実行本体でもあります。 !

2: Runnable 実装クラスのインスタンスを作成し、このインスタンスを Thread のターゲットとして使用して Thread オブジェクトを作成します。この Thread オブジェクトは実際のスレッド オブジェクトです。

3: start メソッドを呼び出してスレッドを開始します。

Javaのスレッドの特徴と使い方は何ですか

結論: Ruunable インターフェイスを使用して複数のスレッドを作成すると、スレッド クラスのインスタンス変数を共有します。これは、プログラムによって作成された Runnable オブジェクトがスレッドのターゲットのみであり、複数のスレッドがターゲットを共有できるため、複数のスレッドでインスタンス変数を共有できるためです。 Javaのスレッドの特徴と使い方は何ですか Runnable によるマルチスレッドの実装は、実際には run をスレッド実行本体にパッケージ化することですが、現時点では Java はメソッドをスレッド実行本体にラップできません

オプション 3:

callable と future を使用します。スレッドを作成する

Java5 以降、Java は Callable インターフェイスを提供します。Callable インターフェイスは、スレッドの実行本体として使用できる call() メソッドを提供します。見た目は Runnable に非常に似ていますが、 call() メソッドはより強力です-mdash;— call() メソッドは戻り値を持つことができ、call() メソッドは例外をスローすることができます

Java5 は、Callable インターフェイス () メソッドの戻り値の呼び出しを表す Future インターフェイスを提供し、Future インターフェイスの FutureTask 実装クラスを提供します。このクラスは、Future インターフェイスを実装し、Runnable インターフェイスも実装します。これは使用できます。スレッドのターゲットとして。 実装手順:

1: Callableインターフェースの実装クラスを作成し、スレッドの実行本体となるcallメソッドを実装し、callメソッドは戻り値を持ちます。呼び出し可能なインターフェースを作成する場合はクラスを実装してください!

2: FutureTask クラスを使用して、Callable オブジェクトをラップします。FutureTask は、Callable クラスの call メソッドの戻り値をラップします。

3: FutureTask オブジェクトを Thread のターゲットとして使用します。新しいスレッドを作成して開始してください!

4: FutureTask の get メソッドを使用して、実行後の戻り値を取得します。

Javaのスレッドの特徴と使い方は何ですか

結論: Runnable とCallable 利点は、スレッド クラスは Runnable または Callable インターフェイスのみを実装し、他のクラスも継承できることです。このメソッドでは、複数のスレッドがターゲット オブジェクトを共有できるため、複数の同一スレッドが同じリソースを処理するのに非常に適しています。したがって、CPU、コード、データを分離し、明確な形式パラメータを持つモデルはオブジェクト指向プログラミングのアイデアを具体化します。欠点は、プログラミングの複雑さが若干高くなるということです。

以上がJavaのスレッドの特徴と使い方は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。