2020 年の新しい Java 面接の質問 - マルチスレッド (1)
1. 並列処理と同時実行の違いは何ですか?
並列とは、同時に発生する 2 つ以上のイベントを指します。同時実行とは、同じ時間間隔で発生する 2 つ以上のイベントを指します。
並列処理は、異なるエンティティ上の複数のイベントであり、同時実行性は、同じエンティティ上の複数のイベントです。
並列処理は 1 つのプロセッサ上で複数のタスクを「同時に」処理することであり、同時実行性は複数のプロセッサ上で複数のタスクを同時に処理することです。 Hadoop分散クラスタなど。
したがって、同時プログラミングの目標は、プロセッサの各コアを最大限に活用して最高の処理パフォーマンスを達成することです。
(推奨される関連ビデオ チュートリアル: java ビデオ )
2. スレッドとプロセスの違いは何ですか?
つまり、プロセスはプログラムの実行とリソース割り当ての基本単位であり、プログラムには少なくとも 1 つのプロセスがあり、プロセスには少なくとも 1 つのスレッドがあります。プロセスには実行中に独立したメモリ ユニットがあり、複数のスレッドがメモリ リソースを共有するため、切り替え回数が削減され、効率が向上します。スレッドはプロセスの実体であり、CPU のスケジューリングとディスパッチの基本単位であり、プログラムよりも小さく独立して実行できる基本単位です。同じプロセス内の複数のスレッドは同時に実行できます。
3. デーモン スレッドとは何ですか?
デーモン スレッド (デーモン スレッド) はサービス スレッドであり、正確には他のスレッドにサービスを提供します。
4. スレッドを作成するにはどのような方法がありますか?
(1) Thread クラスを継承してスレッド クラスを作成する
Thread クラスのサブクラスを定義し、クラスの run メソッドをオーバーライドします。run メソッドのメソッド本体は、その内容を表します。スレッドは完了を望んでいます。タスク。したがって、run() メソッドは実行本体と呼ばれます。
Thread サブクラスのインスタンスを作成します。つまり、スレッド オブジェクトを作成します。
スレッド オブジェクトの start() メソッドを呼び出してスレッドを開始します。
(推奨チュートリアル: java 入門プログラム )
(2) Runnable インターフェイスを使用してスレッド クラスを作成する
Runnable の実装クラスを定義するrun() メソッドのメソッド本体は、スレッドのスレッド実行本体でもあります。
Runnable 実装クラスのインスタンスを作成し、このインスタンスを Thread のターゲットとして使用して Thread オブジェクトを作成します。この Thread オブジェクトが実際のスレッド オブジェクトです。
スレッド オブジェクトの start() メソッドを呼び出してスレッドを開始します。
(3) CallableとFutureによるスレッドの作成
Callableインタフェースの実装クラスを作成し、スレッドの実行本体となるcall()メソッドを実装します。戻り値を持ちます。
Callable 実装クラスのインスタンスを作成し、FutureTask クラスを使用して Callable オブジェクトをラップします。FutureTask オブジェクトは、Callable オブジェクトの call() メソッドの戻り値をカプセル化します。
FutureTask オブジェクトを Thread オブジェクトのターゲットとして使用して、新しいスレッドを作成して開始します。
子スレッドの実行終了後に、FutureTask オブジェクトの get() メソッドを呼び出して戻り値を取得します。
5. 実行可能と呼び出し可能の違いは何ですか?
これは少し深い質問であり、Java プログラマーが取得できる知識の広さを示しています。
Runnable インターフェイスの run() メソッドの戻り値は void であり、その動作は純粋に run() メソッドのコードを実行することだけです。 Callable インターフェイス ) メソッドは戻り値を持ち、ジェネリック型であり、Future および FutureTask と組み合わせて非同期実行の結果を取得するために使用できます。
Java の面接の質問をさらに詳しく知りたい場合は、
Java の高度な面接の質問以上が2020 年の新しい Java 面接の質問 - マルチスレッド (1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

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

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

testthepdfinanapptodetermineisisiis withthefileoredge.2.enablethebuiltinpdfviewerbyturningoff "Alwaysopenpdffilesexternally" and "downloadpdffiles" inedgesettings.3.Clearbrowsingdataincluding andcachedfilestororeveren

ネストされたforeachループを最適化するには、最初に冗長な反復を回避する必要があり、時間の複雑さをo(n×m)からo(n m)に減らすことができます。第二に、構造が本当に階層的でない場合、SelectManyなどのメソッドを使用してデータを平らにする必要があります。第三に、事前に飛び出したり、条件付き判断を通じて不必要な処理をスキップしたりします。第4に、検索効率を改善するために、辞書やハッシュセットなどの適切なデータ構造を選択します。第5に、操作が独立して時間がかかる場合は、並列化を慎重に使用できます。第六に、複雑なロジックを独立した方法またはクエリに抽出して、読みやすさと保守性を向上させます。最適化の核心は、複雑さを減らし、データを合理的に整理し、常にネストの必要性を評価し、最終的に効率的で明確で拡張可能なコードを達成することです。

コンテナ化されたJavaアプリケーション:DockerFileを作成し、Eclipse-Temurin:17-jre-Alpineなどの基本的な画像を使用し、JARファイルをコピーしてスタートアップコマンドを定義し、DockerBuildを介して画像を作成し、Dockerrunでローカルに実行します。 2。画像をコンテナレジストリに押します:Dockertagを使用して画像をマークし、DockerHubやその他のレジストリにプッシュします。最初にdockerloginにログインする必要があります。 3. Kubernetesへの展開:展開を書き込み展開を定義し、レプリカの数、コンテナ画像、リソース制限の数を設定し、service.yamlを作成して作成して作成します

importjava.ioandjava.net.socketfori/oandsocketCommunication.2.CreateAsocketObjectToConnectTotheServerusingHostNameandport.3.USEPRINTWRITERTOSENDDATAVIAOUTSTREAMANDBUFFEREDEDEDEDEDEDEREDEREDERTOREADEREADSERVERRESPONSESSTREAM.

VSCODEでは、ショートカットキーを介してパネルと編集領域をすばやく切り替えることができます。左のエクスプローラーパネルにジャンプするには、Ctrl Shift E(Windows/Linux)またはCMD Shift E(MAC)を使用します。編集エリアに戻って、Ctrl `またはescまたはctrl 1〜9を使用します。マウスの操作と比較して、キーボードのショートカットはより効率的であり、エンコードリズムを中断しません。その他のヒントには、ctrl kctrl eフォーカス検索ボックス、f2の名前変更ファイル、ファイルの削除、開いたファイルの入力、矢印キーの展開/崩壊フォルダー。

JDBCドライバーをロードし、データベース接続を確立します。 2。Connection.Preparestatement()を使用して、プレースホルダーを含むSQLステートメントを作成します。 3。setString()、setInt()、およびその他のメソッドを呼び出して、パラメーター値を1から設定します。 4。SQLタイプに従ってexecuteUpdate()、executequery()、またはexecute()を呼び出して、ステートメントを実行します。 5。リソース付きのトライを使用して、メモリの漏れを防ぎ、データベース操作の安全で効率的な処理を確保するために、接続、準備、結果のリソースを自動的に閉じます。

staticFieldSholdingObjectReferencesCanPreventgarBageCollection; useweakhashmaporcleanupmechanisms.2.usedresourceslikestreamsorconnectionscauseleaks;

Javaユニットテストにモッキートを効果的に使用するには、最初にモキト依存関係を追加し、Mavenプロジェクトにモッキートコアの依存関係を追加し、gardleプロジェクトにockito-core:mockito-core:5.7.0 'を追加する必要があります。次に、@mock annotation(@extendwith(mockitoextension.class)と組み合わせて)またはmock()メソッドを介してモックオブジェクトを作成します。次に、(...)。sonreturn(...)およびmockオブジェクトのメソッド動作をスタブするwhen(...)およびその他の方法を使用するか、異なるものを構成できます
