現在 Node.js に取り組んでいます。以前の JAVA の知識の多くを忘れてしまいましたが、産業言語にはまだ大きな利点があることを嘆いていました。
ディレクトリ
ストリーム
例外
注釈
セキュリティ
クラスローディング
キーワード
初期化
マルチスレッド
スレッド プール
メモリ モデル
ストリーム
Java のすべてのストリーム クラスは java.io パッケージにあり、すべて次の 4 つの抽象ストリーム タイプをそれぞれ継承します。
バイトストリーム | キャラクターストリーム | |
---|---|---|
InputStream | Reader | |
OutputStream | ライター |
名称 | 功能 |
---|---|
ExecutorService | 真正的线程池接口 |
ScheduledExecutorService | 能和Timer/TimerTask类似,解决那些需要任务重复执行的问题 |
ThreadPoolExecutor | ExecutorService的默认实现 |
ScheduledThreadPoolExecutor | 继承ThreadPoolExecutor的ScheduledExecutorService接口实现,周期性任务调度的类实现 |
Executors
newSingleThreadExecutor
シングルスレッドのスレッドプールを作成します。このスレッド プールには 1 つのスレッドだけが動作しており、これはすべてのタスクを直列に実行する単一のスレッドと同等です。唯一のスレッドが異常終了した場合、新しいスレッドがそれを置き換えます。このスレッド プールにより、すべてのタスクが送信された順序で実行されることが保証されます。
newFixedThreadPool
固定サイズのスレッドプールを作成します。スレッドは、スレッド プールの最大サイズに達するまで、タスクが送信されるたびに作成されます。スレッド プールのサイズは、最大値に達しても変更されません。実行例外によってスレッドが終了すると、スレッド プールは新しいスレッドで補充されます。
newCachedThreadPool
キャッシュ可能なスレッド プールを作成します。スレッド プールのサイズがタスクの処理に必要なスレッドを超える場合、タスクの数が増加すると、一部のアイドル スレッド (60 秒間タスクが実行されない) がリサイクルされます。このスレッド プールは、タスクを処理するために新しいスレッドをインテリジェントに追加できます。このスレッド プールは、スレッド プールのサイズを制限しません。スレッド プールのサイズは、オペレーティング システム (または JVM) が作成できる最大スレッド サイズに完全に依存します。
newScheduledThreadPool
サイズ無制限のスレッド プールを作成します。このスレッド プールは、タスクのタイミングと定期的な実行をサポートします。
メモリ モデル
Java メモリ モデルは、複数のスレッドによって共有される変数がメイン メモリに格納されることを規定しています。スレッドは独自の作業メモリにのみアクセスできます。他のスレッドの。メイン メモリの共有変数のコピーは作業メモリに保存されます。これらの共有変数を操作するために、スレッドは作業メモリ内のコピーを操作することができます。操作が完了すると、そのコピーはメイン メモリに同期されます。
複数のスレッドが動作するときにメインメモリのデータの整合性をどのように確保するかは難しい問題です。Java メモリ モデルでは、まず、8 つのアトミック操作が定義されています。 : メインメモリ内の変数をロックし、1 つのスレッド専用にします
unlock: ロックを解除すると、他のスレッドがこの変数にアクセスできるようになります
read: 変数の値を読み取ります。メインメモリ 作業メモリに読み込みます
load: read で読み取った値を作業メモリ内の変数のコピーに保存します。
use: スレッドのコード実行エンジンに値を渡します。
assign: 実行エンジンから返された値を変数コピーに再割り当てします。
store: 変数コピーの値をメインメモリに保存します。
write: ストアに格納されている値をメインメモリのシェア変数に書き込みます。
メモリ構成
ランタイムデータ領域、すべてのクラスインスタンスと配列のメモリはここから割り当てられます。 Java 仮想マシンの起動時に作成されます。オブジェクトのヒープ メモリは、ガベージ コレクタと呼ばれる自動メモリ管理システムによって再利用されます。
ニュース世代(写真では若い世代はエデン+フロムスペース+トゥスペースです)
- エデンには新しいオブジェクトが保存されます
サバイバースペース2には各ガベージコレクションで生き残ったオブジェクトが保存されます
- 古い世代 (Tenured Generation、図では古いスペース) は、主にライフ サイクルの長い ライブ オブジェクトを保存します
- 非ヒープ メモリ
JVM には、アプリケーション内のすべてのスレッドで共有されるメソッド領域があります。メソッド領域は非ヒープメモリに属します。ランタイム定数プール、フィールド、メソッドのデータ、メソッドやコンストラクターのコードなど、すべてのクラス構造が保存されます。 Java 仮想マシンの起動時に作成されます。メソッド領域に加えて、Java 仮想マシンの実装には内部処理または最適化用のメモリが必要になる場合があります。これも非ヒープ メモリです。たとえば、JIT コンパイラは、高いパフォーマンスを実現するために、Java 仮想マシン コードから変換されたネイティブ コードを保存するためのメモリを必要とします。
永続生成 (図の永続スペース) は、クラス オブジェクトやメソッド オブジェクトなどの JVM 独自のリフレクション オブジェクトを保存します
ネイティブ ヒープ
以上がJava ナレッジ概要の詳細 (写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

封装是一种信息隐藏技术,是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法;封装可以被认为是一个保护屏障,防止指定类的代码和数据被外部类定义的代码随机访问。封装可以通过关键字private,protected和public实现。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于设计模式的相关问题,主要将装饰器模式的相关内容,指在不改变现有对象结构的情况下,动态地给该对象增加一些职责的模式,希望对大家有帮助。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!
