Java スレッド クラスもオブジェクト クラスであり、そのインスタンスはすべて java.lang.Thread またはそのサブクラスを継承します。次の方法で Java でスレッドを作成できます:
Tread thread = new Thread();
スレッドを実行するには、スレッドの start() メソッドを呼び出すことができます:
thread.start();
上の例では、スレッドなので、このメソッドを呼び出しました。その後、スレッドが終了します。
スレッドの実行時に実行されるコードを記述する方法は 2 つあります。1 つは Thread サブクラスのインスタンスを作成して run メソッドをオーバーライドする方法、もう 1 つはクラスの作成時に Runnable インターフェイスを実装する方法です。次に、これら 2 つのメソッドについて詳しく説明します。
Thread のサブクラスを作成します。
Thread サブクラスのインスタンスを作成し、run メソッドをオーバーライドします。 run メソッドは、start() メソッドの呼び出し後に実行されます。例は次のとおりです:
public class MyThread extends Thread { public void run(){ System.out.println("MyThread running"); }}
上記の Thread サブクラスは次の方法で作成して実行できます
MyThread myThread = new MyThread();myTread.start();
start メソッドは、スレッドが開始されると、run メソッドの実行が完了するのを待たずにすぐに戻ります。あたかも run メソッドが別の CPU で実行されているかのようです。 run メソッドが実行されると、文字列 MyThread running が出力されます。
次のように Thread の匿名サブクラスを作成することもできます:
Thread thread = new Thread(){ public void run(){ System.out.println("Thread Running"); }};thread.start();
新しいスレッドの run メソッドが実行されると、コンピューターは文字列「Thread Running」を出力します。
Runnable インターフェースを実装する
スレッド実行コードを記述する 2 番目の方法は、java.lang.Runnable インターフェースを実装するクラスの新しいインスタンスを作成することです。インスタンス内のメソッドはスレッドから呼び出すことができます。以下に例を示します。
public class MyRunnable implements Runnable { public void run(){ System.out.println("MyRunnable running"); }}
スレッドが run() メソッドを実行できるようにするには、MyRunnable のインスタンス オブジェクトを Thread クラスのコンストラクターに渡す必要があります。例は次のとおりです。
Thread thread = new Thread(new MyRunnable());thread.start();
スレッドの実行中に、Runnable インターフェイスを実装する run メソッドが呼び出されます。上の例では、「MyRunnable running」が出力されます。
同様に、以下に示すように、Runnable インターフェースを実装する匿名クラスを作成することもできます:
Runnable myRunnable = new Runnable(){ public void run(){ System.out.println("Runnable running"); }}Thread thread = new Thread(myRunnable);thread.start();
サブクラスを作成しますか、それとも Runnable インターフェースを実装しますか?
2 つの方法のどちらが優れているかについて明確な答えはありませんが、どちらも要件を満たしています。私の個人的な意見では、Runnable インターフェイスを実装することを好みます。スレッド プールは Runnable インターフェイスを実装するスレッドを効果的に管理できるため、スレッド プールがいっぱいの場合、スレッド プールが空になるまで新しいスレッドは実行のキューに入れられます。 Thread サブクラスを実装することでスレッドを実装する場合、これはさらに複雑になります。
Runnable インターフェースと Thread サブクラスを同時に実装する 2 つの方法を組み合わせる必要がある場合があります。たとえば、Thread サブクラスを実装するインスタンスは、Runnable インターフェイスを実装する複数のスレッドを実行できます。典型的なアプリケーションはスレッド プールです。
よくある間違い: start() メソッドの代わりに run() メソッドを呼び出す
スレッドを作成して実行するときによくある間違いは、以下に示すように、start() メソッドの代わりにスレッドの run() メソッドを呼び出すことです。 :
Thread newThread = new Thread(MyRunnable());newThread.run(); //should be start();
run() メソッドは期待どおりに呼び出されるので、最初は何も違和感はありません。ただし、実際には、 run() メソッドは、作成されたばかりの新しいスレッドによって実行されるのではなく、新しいスレッドを作成した現在のスレッドによって実行されます。つまり、上記の 2 行のコードを実行するスレッドによって実行されます。作成した新しいスレッドで run() メソッドを実行したい場合は、新しいスレッドの start メソッドを呼び出す必要があります。
スレッド名
スレッドを作成するときに、スレッドに名前を付けることができます。これは、異なるスレッドを区別するのに役立ちます。例: 複数のスレッドが System.out に書き込む場合、スレッド名を通じてどのスレッドが出力しているかを簡単に見つけることができます。例は次のとおりです。
MyRunnable runnable = new MyRunnable();Thread thread = new Thread(runnable, "New Thread");thread.start();System.out.println(thread.getName());
MyRunnable は Thread のサブクラスではないため、MyRunnable クラスには getName() メソッドがないことに注意してください。現在のスレッドの参照は、次の方法で取得できます:
Thread.currentThread();
したがって、次のコードを通じて現在のスレッドの名前を取得できます:
String threadName = Thread.currentThread().getName();
スレッド コードの例:
これは小さな例です。まず、main()メソッドを実行しているスレッド名を出力します。このスレッドは JVM によって割り当てられます。次に、10 個のスレッドを開始し、1 ~ 10 の名前を付けます。各スレッドは、自身の名前を出力した後に終了します。
public class ThreadExample { public static void main(String[] args){ System.out.println(Thread.currentThread().getName()); for(int i=0; i<p> スレッドの開始順序は規則的ですが、実行の順序は規則的ではないことに注意してください。つまり、スレッド No. 1 は、必ずしもその名前をコンソールに出力する最初のスレッドであるとは限りません。これは、スレッドが順番ではなく並列で実行されるためです。スレッドの実行順序はJvmやOSが決定するものであり、スレッドの起動順序とは必ずしも一致しません。 </p><p>関連する推奨事項: </p><p><a href="http://www.php.cn/java-article-380058.html" target="_self"> Java スレッドセーフカウンターの簡単なコード例</a></p><p><a href="http://www.php.cn/java-article-374963.html" target="_self"> Java スレッド内のオブジェクトの同期と非同期のインスタンス分析</a></p><p><a href="http://www.php.cn/java-article-368644.html" target="_self"> Java スレッド間の通信を待機/通知する</a></p>
以上がJava スレッドを作成および実行するメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
