マルチスレッドのスレッドプール

1. Javaのメモリモデルとは何ですか?
    Java仮想マシン上で実行するJavaプログラムは、Javaのメモリモデル(Javaのメモリモデル、JMM)は、それぞれにそのJavaプログラムを確実にするために、ハードウェアとオペレーティングシステムの様々なへのアクセスの違いをシールド、ラインにおける標準メモリモデルの一種でありますメモリメカニズムへのプラットフォームへのアクセスの種類の下で一貫性のある結果と規範性を確保することができます。
2.MySQLトランザクション分離レベル?
    春と実際にMySQLはトランザクション分離レベルトランザクション分離レベル、1であり、READ UNCOMMITTED(また、ダーティ・リードとして知られているコミットされていないコンテンツを、読み出し)、2は、反復、3、(提出読み取り)コミットを読みます読む(再読み込み、MySQLのデフォルトのトランザクション分離レベルすることができます)、4、シリアライズ(直列化可能)
3.Springの原則?
    量スプリングコアとAOP IOC、IOC及び依存性注入を反転を制御し、注入セットは、注射、注入コンストラクタ、インタフェース噴射に分割することができます。IOCは、コンテナであるアプリケーションオブジェクトをインスタンス化または構成する責任があると、これらのオブジェクト間の依存関係を再開する。IOCのアイデアは、次のとおりです。春は、これらのオブジェクトを管理する彼らのビジネス関係に対処します。制御の反転:元プログラマーの依存逆転を取得する方法は、管理するために、春に、独自のオブジェクトを作成する必要があります。
4.オーバーライドがハッシュコードを書き換えることと等しいのはなぜ?(==比較アドレスは、比較対象のコンテンツに等しい)
    2つのオブジェクトが等しいかどうか、あなたがイコール、ハッシュコードをオーバーライドしますが変更をしなかった場合、比較はハッシュコードは、ある、それは2つのオブジェクトが等しい明らかに発生することがあり2つのオブジェクトが等しいかどうかではなく、同じハッシュコードは、原因が特定できません。
5.Objectのいくつかの方法
    1.hashCodeは():ユーザーのハッシュ値を取得するために使用される取得します
    2.cloneは():このオブジェクトのコピーを作成して、返し
    3.equals(オブジェクトOBJ)をいくつかの他のオブジェクトを示すためにはこれと同じです。
    4.getClass():このオブジェクトの実行時クラスを返します。
    ()5.toStringは:オブジェクトの文字列表現を返します。
    6.waitは():別のスレッドがオブジェクトの通知()メソッドまたはのnotifyAll()メソッドを呼び出すまで、現在のスレッドを待機させ。
    7.notify()とのnotifyAll():すべてのオブジェクトのモニターで待機中のスレッドウェイク/単
6. 2つの方法で動的剤との間の差
    と分割されているJDKダイナミックプロキシCGLIB動的プロキシにエージェント
        JDK動的プロキシにのみ達成することができます生成エージェントはなく、クラスのクラスインターフェイス
        動的プロキシクラスは、主に指定されたクラスのサブクラス、被覆が継承を実現する方法を生成するために、CGLIB剤に対して実装します。
スレッドプール7.、スレッドプールのプロセスにスレッドを作成
    スレッドプール:他のタスクが行くを作成する場合には、スレッドを作成するには時間がかかり、効率がやや低かった、JDK1.5からスタートして、JavaのAPIはエグゼキュータのためのフレームワークを提供しますあなたは別のスレッドプールを作成することができます。
    corePoolSize:スレッドのコア数は、同時に実行できるタスクの数
    maximumPoolSizeを:スレッドの最大数は、作成することができ、ほとんどの内のスレッド数ことを示している
    アイドル状態のスレッドの保持時間:keepAliveTimeがを
    するTimeUnit:アイドルスレッドでの滞留時間
    ワークキューは:待機中のスレッドのキューをブロック
    threadFactory:スレッドファクトリの作成
    ハンドラを:数がmaximumPoolSizeタスクを超えた場合、ポリシーを処理するタスクは、デフォルトのポリシーが追加することを拒否することです
    実装プロセスを:ときcorePoolSizeより少ないスレッド数は、それぞれのタスクを追加し、それはすぐにオープンスレッドの実行でしょう。 corePoolSizeフルタイム、タスクがバックバッファキューのワークキュー待ちに追加されます。ない場合ときワークキューフルタイム、スレッドmaximumPoolSizeの数を超えるかどうかを確認するために、超えた場合は、すぐにスレッドを作成し、実行することを拒否しました。
8.悲観的ロックと楽観的ロックのCASの実現と楽観的ロック操作を
    悲観的ロック:常に最悪のケースを想定し、データを取るたびに他の人がデータを変更すると思いますので、他のものとなるよう、データを取るたびにロックされますデータがブロックされた状態になります時間がかかり、Javaは同期悲観的ロックです。リレーショナルデータベースの行ロックは、ロックが排他的ロックされ、書き込みロックを読み取ります。
    オプティミスティック・ロック:データを扱う際に読み取り、多くの種類のために他の人がロックされていない、変更されませんが、更新はこのデータを更新されていません。この期間中に他人を判断する時期たびに、楽観的ロックは、スループットを向上させることができます量。
    メモリアドレスV、古い期待値A、新しい期待値B.:3つのオペランドを持つCAS(比較交換、比較および交換)、変数を更新し、場合にのみ、メモリアドレスが同じである変数AとVの期待値の実際の値が、値V Bを修正するために、対応する専用メモリアドレス あるいはCAS値はアトミックです。CASは、複数のスレッドが変数を更新するためにCASを使用するときに楽観的ロックの技術である、との競争がある場合は、以上のように、代わりに状態忙しいサイクルに設定したスレッドを使用するので、すぐに中断されることはありませんプロセスのリソースへのアクセスがありませんあなたはいくつかの時間のためにロックを取得することができれば、あなたが中断した時間を超えた場合、参照してください。ABAの欠点は、問題があるということである(Aでの私の記憶のオブジェクトからは、Bは、CASが本当の変更として変更されませんなりになります)、長いサイクル時間オーバヘッド大(と期待が間違っている、します常にサイクル)
9。スレッドの状態は何ですか?
    新しいステータス(新規、スレッドが開始されていない)、レディ状態(Runnableを、新しいスレッドが自動的に実行されません、あなたがスレッドのstart()メソッドを呼び出す必要がある)、動作状態(実行中は、実行()メソッドを開始しました)、デッド状態(デッド実行方法非難、スレッドが終了し、又は中止の実行方法をキャプチャされる)、(ブロックされた、動作中に、それがブロックされた状態に様々な理由であってよい)の状態をブロッキング
    状態を遮断する理由は:1。睡眠睡眠法呼び出すことで、スレッド
            のロックを取得しようとしている2.スレッドを、しかしロックが別のスレッドによって保持されている
            。3.スレッドがトリガ条件を待っている
:の差10.sleepと待機
    睡眠()メソッドは、スレッドのクラスに属します待機()メソッドは、オブジェクトクラスに属しながら、プログラムの特定の時間にスリープ()メソッドの結果は、他のスレッドにCPUを可能に懸濁されたが、指定された時刻に、自動的に実行するように戻ったとき、彼の状態監視を維持しています、プロセスの睡眠()メソッドを呼び出すと、スレッドがオブジェクトのロックを解除しません。通話待ち()メソッドスレッドがに、オブジェクトのロックを放棄する時期 このオブジェクトは、このオブジェクトは、(通知コールするだけのために、ロック・プールを待っている)、または準備完了プールに入る前にThreadオブジェクトロックののnotifyAll()メソッドされた後。
11.Javaヒープ及びスタック
    の各スレッドが別のスレッドが表示されていないながら、スレッド上に格納されたローカル変数、メソッドパラメータとコールスタック、変数を格納するための独自のスタックメモリを有しています。ヒープ、メモリの共通領域のすべてのスレッドで共有されているオブジェクトを反応器内に作成され、効率を向上させるために、独自のスタックにヒープからスレッド・キャッシュ・メモリ、複数のスレッドが変数を使用している場合、それは問題を引き起こす可能性があり、その後、揮発性変数は、変数のスレッドメインメモリから読み込みの値を必要とする、遊びに来ます。
実行順に3つのスレッドを確保するための方法12
    Thread.join()メソッドで
13.どのようにスレッドがロックを持っているかどうかを検出するには?
    java.long.Thread holdLocakの方法がある()メソッドは、戻り値はブールです
    Threadクラスの利回り法は他が同じ優先順位のスレッドの実行持たせ、現在実行中のスレッドオブジェクトを一時停止することができます
どのようにデッドロックを回避する14
    マルチスレッドデッドロックは:実装プロセス内の2つの以上のプロセス、お互いを待つことによって引き起こされたリソースのための競争の結果の場合を指します。:デッドロックは、次の基準を満たしている必要があり
    、リソースが唯一のプロセスで使用することができます:1.相互に排他的な条件を
    2.要求と条件を維持する:要求されたリソースは、リソースが保留に保持されているため、プロセスがブロックされている場合は
    3を。ない剥奪:プロセスは、リソースへのアクセスを持って前に使用されていない、奪うことができない
    4サイクル待ち条件を:リソースの関係を待っているのサイクルをエンドツーエンドの一種で、いくつかのプロセスの間に形成された(私は...無限ループを理解します)
    最も簡単な解決策:動作させるための特定のために循環を遮断する条件を待って
ブロックしたときにどのようなモード15
    の間に他のことを行うことができないブロックモードは、プロセスが完了するまでプログラムが待機することを意味します。
そのConcurrentHashMapの16 Javaでの並行性のどの程度?
    ConcurrentHashMapの分割された部分は、実際に、そのスケーラビリティおよびセキュリティスレッドを達成するためにマッピングされ、この分割は、オプションのパラメータのConcurrentHashMapクラスのコンストラクタである、並行性の程度を使用することによって得られる、デフォルト値は16であり、マルチあってもよいです場合は、ロック競合を避けることができるスレッド。

おすすめ

転載: www.cnblogs.com/tk970803/p/11084847.html