目次
簡単な歴史
スレッドの利点
スレッドのリスク

JAVAの簡単な紹介

Jun 23, 2017 pm 01:52 PM
ノート 導入 読む

簡単な歴史

初期のコンピューターにはオペレーティング システムが含まれておらず、最初から最後まで 1 つのプログラムのみが実行され、このプログラムはコンピューターのすべてのリソースにアクセスできました。コンピューターの発展とオペレーティング システムの登場により、コンピューターは複数のプログラムを同時に実行できるようになり、各プログラムは別個のプロセスで実行されます。どうしてそれをするの?主に次の理由に基づいています:

1.リソース使用率 プログラムの待機中にコンピューターは別のプログラムを実行でき、同じリソースを異なるプログラムで使用できるため、間違いなくリソース使用率が向上します。
2. 公平性 異なるユーザーとプログラムは、コンピュータを使用する同じ権利を持ちます。各プログラムは、前のプログラムの実行が完了するのを待ってから次のプログラムを開始するのではなく、タイム スライスを通じてリソースを共有します。
3.利便性各プログラムは独立して実行され、必要に応じて相互に通信するため、1 つのプログラムですべてのタスクを完了するよりも実装が簡単です。

コンピューターはシングルタスクからマルチタスクに進化したため、プログラムも従来のシリアル プログラムから同時実行プログラムに自然に進化することができます。

シリアルプログラムの利点は、シンプルで直感的であることです。しかし、スレッドの出現を促した上記の3つの理由によるものでもあります。上記のコンピューターは、別々のプロセスでプログラムを実行でき、 スレッドにより、同じプロセス内に複数のプログラム制御フローが存在できます。 プログラムの複数のスレッドを複数の CPU で同時に実行するようにスケジュールすることもできます。これは、コンピュータが複数のプログラム(プロセス)を同時に実行し、プログラムが複数のスレッドを同時に実行することに相当します。つまり、プロセス内でスレッドを実行します。

スレッドは軽量プロセスとも呼ばれます。現在のオペレーティング システムは、スレッドを基本単位としてスケジュールされています。リソースはスレッド間で共有されるため、明確な同期メカニズムがないと、スレッド間の実行の乱れ、データのエラーや障害、例外が発生します。多くの場合、これが同時プログラミングの難しさです。

私の観点からすると、いわゆる並行プログラミングとはスレッドの使用です。スレッドは多くの非同期ワークフローをシリアル ワークフローに変換できます。並行プログラミングは、非同期状況での同期を実現してニーズを満たすようにすることです。

では、スレッドのメリットとリスクは何でしょうか?

スレッドの利点

スレッドは、プログラムの開発とメンテナンスのコストを効果的に削減し、パフォーマンスを向上させることができます。コードの複雑さを軽減し、人間の作業方法をより適切にシミュレートします。

利点 1. マルチプロセッサの強力な機能を最大限に活用できるようになり、マルチプロセッサ システムはますます完璧になり、スレッドの役割が特に明確になってきています。特に I/O 操作中に、複数のプロセッサーによって異なるスレッドを同時にスケジュールできるため、プログラムの待機時間が短縮され、プログラムの実行効率が向上し、システムのスループットが向上します。
メリット 2. モデリングの難しさを軽減します。複数のことを行うよりも、常に同じことを行う方が簡単です。スレッドを使用してプログラム タスクを調整し、複数のタスクを複数のスレッドに割り当てます。各スレッドには 1 つのタスクがあり、必要に応じて相互に通信します。タスクを前後に切り替えるよりもコストがかかりません。
メリット 3. 非同期イベント処理を簡素化する 応答を待つリクエストが発行された場合、プログラム全体が待機する必要がありますか?これは、他のすべてのリクエストが停止されることを意味します。チャットと同じように、次の文を言う前に相手が応答しなければなりません。これは明らかに不合理です。各リクエストがスレッドによって処理される場合、スレッドは独立しており、相互に影響を及ぼさないため、問題は解決されます。もちろん、チャットで返信するときに相手が何を言ったかを知る必要がある場合は、スレッドの安全性に注意してください。
利点 4. ユーザー インターフェイスの応答性が向上 従来の GUI プログラムはシングルスレッドであり、ユーザー イベントの 1 つの処理に時間がかかりすぎると、プログラム全体が停止し、ユーザー エクスペリエンスが低下します。時間のかかる操作が別のスレッドに割り当てられている場合でも、他のイベントは引き続きそのスレッドによって処理されるため、ユーザー インターフェイスがスムーズになります。

スレッドのリスク

スレッドのサポートは諸刃の剣であり、並行プログラムの開発はプログラマーにとってより高いレベルの要件ももたらします。

リスク 1。セキュリティの問題 同時プログラミングでは、シングルスレッド プログラムでは発生しないエラーが発生する可能性があります。
リスク2。 活力の問題 活力の定義は、「正しいことが確実に起こること」です。単一スレッド内の無限ループは活性の問題です。スレッド A がスレッド B が保持するリソースを解放するのを待ち、スレッド B がリソースを解放しなかった場合、スレッド A は永久に待機することになります。これはアクティビティの問題です。
リスク 3. パフォーマンスの問題 パフォーマンスとは、「正しいことができるだけ早く起こること」です。適切な同時実行設計はパフォーマンスを向上させますが、その逆も結局のところ、スレッドの開始によってリソースを消費します。

セキュリティに関する良い例があります:

value++;
ログイン後にコピー

この 1 行のコードだけでは、シングルスレッドのプログラムではまったく問題ありませんが、マルチスレッドのプログラムでは予期せぬ結果が発生する可能性があります。

このコード行を実行するには 3 つのステップがあります: 1. 値を読み取る; 2. 値を 1 加算する; 3. 加算した値を 1 だけ value に代入します。この期間中、プログラムは複数のスレッドによって交互に実行される可能性があり、2 つのスレッドが同時に値を読み取り、同じ値を取得し、それに同時に 1 を加算すると、異なるスレッドが同じ値を取得することになります。 。そして、この値が 2 回追加されることが期待されます。

すべての Java プログラムはスレッドを使用します。プログラム内で明示的にスレッドを作成しない場合でも、使用するフレームワークはスレッドを作成します。これらのスレッドはスレッドセーフである必要があります。

以上がJAVAの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

小紅書メモを削除する方法 小紅書メモを削除する方法 Mar 21, 2024 pm 08:12 PM

小紅書メモを削除するにはどうすればよいですか? メモは小紅書アプリで編集できます。ほとんどのユーザーは小紅書メモの削除方法を知りません。次に、エディターがユーザーに小紅書メモの削除方法に関する写真とテキストを提供します。チュートリアル、興味のあるユーザーが来て、それを受講してください見てください!小紅書使い方チュートリアル 小紅書メモの削除方法 1. まず小紅書アプリを開いてメインページに入り、右下隅の[自分]を選択して特別エリアに入ります; 2. 次に、マイエリアで、表示されているメモページをクリックします下の図で、削除したいメモを選択します; 3. メモページに入り、右上隅の [3 つの点] をクリックします; 4. 最後に、下部に機能バーが展開され、[削除] をクリックして完了します。

小紅書に関する削除されたメモは復元できますか? 小紅書に関する削除されたメモは復元できますか? Oct 31, 2023 pm 05:36 PM

小紅書から削除されたメモは復元できません。小紅書は知識共有とショッピングのプラットフォームとして、ユーザーにメモを記録し、役立つ情報を収集する機能を提供します。小紅書氏の公式声明によると、削除されたメモは復元できないとのこと。小紅書プラットフォームには、専用のノート回復機能はありません。これは、Xiaohongshu でメモが削除されると、誤って削除されたか、その他の理由であったとしても、プラットフォームから削除されたコンテンツを取得することは通常不可能であることを意味します。特別な状況が発生した場合は、Xiaohongshu のカスタマー サービス チームに連絡して、問題の解決に協力できるかどうかを確認してください。

小紅書に投稿したメモが見つからない場合はどうすればよいですか?送信したばかりのメモが見つからない理由は何ですか? 小紅書に投稿したメモが見つからない場合はどうすればよいですか?送信したばかりのメモが見つからない理由は何ですか? Mar 21, 2024 pm 09:30 PM

小紅書のユーザーとして、私たちは皆、公開されたノートが突然消えてしまう状況に遭遇したことがありますが、間違いなく混乱し、心配しています。この場合、どうすればよいでしょうか?この記事では、「小紅書が公開したメモが見つからない場合の対処方法」というテーマに焦点を当て、詳細な回答を提供します。 1. 小紅書が発行したメモが紛失した場合はどうすればよいですか?まず、パニックにならないでください。メモがなくなっていることに気づいた場合は、パニックに陥らず、落ち着いて行動することが重要です。これは、プラットフォームのシステム障害または操作エラーが原因である可能性があります。リリース記録の確認も簡単です。小紅書アプリを開き、「自分」→「公開」→「すべての出版物」をクリックするだけで、自分の出版記録を表示できます。ここでは、以前に公開されたノートを簡単に見つけることができます。 3.再投稿。見つかったら

最新のiOS 17システムでiPhoneにApple Notesを接続する方法 最新のiOS 17システムでiPhoneにApple Notesを接続する方法 Sep 22, 2023 pm 05:01 PM

リンクの追加機能を使用して iPhone で AppleNotes をリンクします。注: iOS17 がインストールされている場合、iPhone 上で Apple Notes 間のリンクを作成することができます。 iPhone でメモ アプリを開きます。次に、リンクを追加するメモを開きます。新しいメモを作成することもできます。画面上の任意の場所をクリックします。メニューが表示されます。右側の矢印をクリックして、「リンクの追加」オプションを表示します。クリックして。ここで、メモの名前または Web ページの URL を入力できます。次に、右上隅の「完了」をクリックすると、追加されたリンクがメモに表示されます。単語にリンクを追加したい場合は、単語をダブルクリックして選択し、「リンクを追加」を選択して、 を押します。

小紅書でノートに商品リンクを追加する方法 小紅書でノートに商品リンクを追加するチュートリアル 小紅書でノートに商品リンクを追加する方法 小紅書でノートに商品リンクを追加するチュートリアル Mar 12, 2024 am 10:40 AM

小紅書でメモに商品リンクを追加するにはどうすればよいですか?小紅書アプリでは、ユーザーはさまざまなコンテンツを閲覧できるだけでなく、ショッピングもできるため、このアプリにはショッピングのおすすめや良い商品の共有に関するコンテンツがたくさんあります。このアプリでは、ショッピング体験を共有したり、協力してくれる販売者を見つけたり、メモにリンクを追加したりすることもできます。便利なだけでなく、専門家がいくつかの機能を備えているため、多くの人がこのアプリをショッピングに使用したいと考えています。興味深いコンテンツを閲覧して、自分に合った衣料品があるかどうかを確認できます。ノートに商品リンクを追加する方法を見てみましょう! 小紅書ノートに商品リンクを追加する方法 携帯電話のデスクトップでアプリを開きます。アプリのホームページをクリックします

Yii フレームワークの紹介: Yii の核となる概念を理解する Yii フレームワークの紹介: Yii の核となる概念を理解する Jun 21, 2023 am 09:39 AM

Yii フレームワークは、Web アプリケーション開発時に効率性と信頼性が高い、高性能、拡張性、保守性の高い PHP 開発フレームワークです。 Yii フレームワークの主な利点は、その独自の機能と開発方法にあり、同時に多くの実用的なツールと機能が統合されていることです。 Yii フレームワークの中心概念である MVC パターン、Yii は MVC (Model-View-Controller) パターンを採用しています。これは、アプリケーションを 3 つの独立した部分、つまりビジネス ロジック処理モデルとユーザー インターフェイス プレゼンテーション モデルに分割するパターンです。 。

Python ORM パフォーマンス ベンチマーク: さまざまな ORM フレームワークの比較 Python ORM パフォーマンス ベンチマーク: さまざまな ORM フレームワークの比較 Mar 18, 2024 am 09:10 AM

オブジェクト リレーショナル マッピング (ORM) フレームワークは、Python 開発において重要な役割を果たします。オブジェクト データベースとリレーショナル データベースの間にブリッジを構築することで、データ アクセスと管理を簡素化します。さまざまな ORM フレームワークのパフォーマンスを評価するために、この記事では次の一般的なフレームワークに対してベンチマークを実行します。 sqlAlchemyPeeweeDjangoORMPonyORMTortoiseORM テスト方法 ベンチマークでは、100 万レコードを含む SQLite データベースを使用します。テストでは、データベースに対して次の操作を実行しました。 挿入: テーブルに 10,000 件の新しいレコードを挿入します。 読み取り: テーブル内のすべてのレコードを読み取ります。 更新: テーブル内のすべてのレコードの 1 つのフィールドを更新します。 削除: テーブル内のすべてのレコードを削除します。 各操作

ビッグデータ プロジェクトにおける Python ORM の適用 ビッグデータ プロジェクトにおける Python ORM の適用 Mar 18, 2024 am 09:19 AM

オブジェクト リレーショナル マッピング (ORM) は、開発者が SQL クエリを直接記述せずにオブジェクト プログラミング言語を使用してデータベースを操作できるようにするプログラミング テクノロジです。 Python の ORM ツール (SQLAlchemy、Peeweee、DjangoORM など) は、ビッグ データ プロジェクトのデータベース操作を簡素化します。利点 コードの単純さ: ORM により、長い SQL クエリを作成する必要がなくなり、コードの単純さと読みやすさが向上します。データの抽象化: ORM は、アプリケーション コードをデータベース実装の詳細から分離する抽象化レイヤーを提供し、柔軟性を向上させます。パフォーマンスの最適化: ORM は多くの場合、キャッシュとバッチ操作を使用してデータベース クエリを最適化し、それによってパフォーマンスを向上させます。移植性: ORM により、開発者は次のことが可能になります。

See all articles