1 、同期概念:
- 同期 : (同期使うお金を引き出すために銀行に個人的に開催された銀行カードを所有して IOの、時間をするJava 自身の持つ契約IOは、読み取りおよび書き込み)。
- 非同期 : 手数料弟がお金を引き出すために銀行に銀行カードを取り、その後、あなたを与えるために(非同期使用して IOの時間を、JavaはIOを読み、に委託書き込みOSの処理、データはバッファアドレスとサイズに渡される必要があるOS(銀行カードやパスワード)、OSは、非同期サポートする必要があるのIO 操作のAPIを)。
- 妨害 : ATMのキューの引き出し、あなたは(ブロッキング使用する待つ必要がIOをするとき、のJava リーダーが返す前に完了するまで、呼び出しブロック)。
- ノンブロッキング : その後、カウンターの引き出し、番号を取り、何かをやって椅子に座って、あなたがちょうど行くことができない番号に、あなたは常にマネージャーに依頼することができない、と等号放送の契約が通知されますロビーに並んで、ロビーマネージャーもあればと言っていませんでしたあなたがに行くことができない無(非ブロックの使用 IOをするとき、あなたは読み取りおよび書き込みができない場合のJava とき呼び出しは、すぐに戻りませんIOのイベントディスパッチャは、読者が完了するまで継続的にループを読み書き、読み取りと書き込みを続けることができお知らせします)。
2 、Javaのための BIO 、NIO 、AIOのサポート:
- BIOのJava :クライアントは、サーバー側の接続要求を持っていることを同期ブロッキング、サーバモードスレッドの接続を達成するために、接続がスレッドの不要なオーバーヘッドを引き起こす何もしない場合は、処理のためのスレッドを開始する必要があり、もちろん、あなたがすることができますスレッドプールメカニズムによって改善。
- NIOのJava :非ブロック同期、サーバはスレッドの実現のモードを要求し、クライアントから送信された、すなわち接続要求がマルチプレクサは、ポーリングに接続され、マルチプレクサに登録されているI / O 要求が起動するとき処理のためのスレッド。
- AIOのJava (NIO.2 ):スレッド、クライアントに有効な要求を達成するために、非同期サーバーモードを非ブロックI / Oの要求があるからOS のアプリケーションを完了するために、その後の処理のためのスレッドを開始するために、サーバーに通知します
3 、BIO 、NIO 、AIO 該当シーン解析:
- バイオ
BIOの方法は、このように、サーバリソースの接続の数が比較的少ないと固定アーキテクチャに適用可能であり、比較的高いが、限られた同時実行アプリケーション、JDK1.4 以前の唯一のオプションが、手順は簡単かつ直感的に理解しやすいなしに、パフォーマンスが非常に悪く、任意の最適化とサポート。
- NIO
NIO(新しいI / O)は、新しいI / O動作とJava SE1.4以降のバージョン(即ちjava.nioのパッケージ及びそのサブパケット)です。バッファに基づいて、非ブロッキングI / O操作のJava APIを提供することができるNIO Javaは、NIOしたがって、非ブロッキングI / O略語とみなすこと。従来の同時実行I / O操作(バイオ)よりも良好な性能を有しています。接続の数に適用されるが、このようなチャットサーバ、限られた同時アプリケーションとして、大きく、比較的短い接続(ライト動作)アーキテクチャです。
- 4月
性能を大幅に向上、非同期IOの問題を解決するのが最もインストールするのが難しいが、オペレーティングシステムレベルから
Tomcat8 のデフォルトの動作モード NIO
[ルート@ localhostの〜]#テール-1 /usr/local/tomcat8/logs/catalina.out
08年04月2019年11:45:01.589 信息[メイン] org.apache.coyote.AbstractProtocol.start ProtocolHandlerを開始[ "HTTP-NIO-8080"]
[ルート@ localhostの〜]#のVimの/usr/local/tomcat8/conf/server.xml
<コネクタポート= "8080" プロトコル= "org.apache.coyote.http11.Http11NioProtocol "
ConnectionTimeout = "20000"
redirectPort = "8443"
圧縮=「上」
compressionMinSize = "50"
noCompressionUserAgents = "ゴジラ、椿姫"
compressableMimeType = "text / htmlの、text / xmlで、テキスト/ javascriptの、テキスト/ cssの、text / plainの" />
[ルート@ localhostの〜]#の/usr/local/tomcat8/bin/shutdown.sh
[ルート@ localhostの〜]#の/usr/local/tomcat8/bin/startup.sh
[ルート@ localhostの〜]#テール-f /usr/local/tomcat8/logs/catalina.out
08年04月2019年11:56:02.441 信息[メイン] org.apache.coyote.AbstractProtocol.start ProtocolHandlerを開始[ "HTTP-NIO-8080"]
モデル3 4月:
[ルート@ localhostのは〜]#回転数-e --nodeps 4月
[ルート@ localhostの〜]#yumを-y 4月4月-develのインストール
[ルート@ localhostの〜]#cpは/usr/local/tomcat8/bin/tomcat-native.tar.gz /ルート/
[ルート@ localhostの〜]#タールXFは、Tomcat-native.tar.gz
[ルート@ localhostの〜]#のCDのtomcat-ネイティブ-1.2.12-srcの/ネイティブ/
[ルート@ localhostのネイティブ]#./configureを--with-4月=は/ usr / binに/ 4月-1-config設定--with-javaの自宅=は/ usr / local / javaの&& && make installを作るには
-------------------------------------------------- --------------------
ライブラリは、内に設置されています:
/ usr / local / 4月/ libに
あなたは今までにインストールしたライブラリをリンクしたいことが起こる場合
指定されたディレクトリ、LIBDIRに、あなたは、libtoolのを使用する必要がありますし、
ライブラリのフルパス名を指定するか、または `-LLIBDIRを使用
:リンクと以下の少なくともいずれかを実行中フラグ
- `LD_LIBRARY_PATHの環境変数にLIBDIRを追加
実行中
- `LD_RUN_PATH」環境変数にLIBDIRを追加
リンク時
- `-Wl、-rpath -Wl、LIBDIR」リンカのフラグを使用
- システム管理者は、 `は/etc/ld.so.conf」にLIBDIRを追加しています
共有ライブラリに関するすべてのオペレーティングシステムのマニュアルを参照してください
このようなLD(1)及びld.so(8)のマニュアルページなどの詳細については、。
-------------------------------------------------- --------------------
[ルート@ localhostのtomcatのネイティブ-1.2.17-SRC]#の CD
[ルート@ localhostのネイティブ]#件のvim /usr/local/tomcat8/bin/catalina.sh ## 末尾に追加、環境変数を設定
CATALINA_OPTS = " - Djava.library.path 4月/ libに/ =は/ usr / local"
[ルート@ localhostのネイティブ]#のVimの/usr/local/tomcat8/conf/server.xml
69 <コネクタポート= "8080"プロトコル= "org.apache.coyote.http11.Http11AprProtocol" [ルート@ localhostの〜]#のVIのM / etc / profileを## 最後の行に
輸出LD_LIBRARY_PATH = $ LD_LIBRARY_PATHの:は/ usr / local / 4月/ libに
[ルート@ localhostのネイティブ]#のソースは/ etc / profile // ロードプロセスファイルプロフィール
[ルート@ localhostのネイティブ]#/usr/local/tomcat8/bin/shutdown.sh
[ルート@ localhostのネイティブ]#/usr/local/tomcat8/bin/startup.sh
[ルート@ localhostの〜]#netstatの-utpln |グレップのJava
TCP 0 0 0.0.0.0:8080 0.0.0.0:* 2748 / javaのLISTEN
TCP 0 0 127.0.0.1:8005 0.0.0.0:* 2748 / javaのLISTEN
[ルート@ localhostのネイティブ]#テール-3 /usr/local/tomcat8/logs/catalina.out
08年04月2019年12:20:20.455 信息[メイン] org.apache.coyote.AbstractProtocol.start ProtocolHandlerを開始[ "AJP-NIO-8009"]
再起動解決 Tomcatのサービス、後の8005のポートの問題遅れてスタートを。
[ルート@ localhostの〜]#viのを/usr/local/java/jre/lib/security/java.security
117 securerandom.source =ファイル:の/ dev / urandomの// Tomcatはロードポート遅延8005を容易にするために、乱数を改変しました