序文
最近、私は元のスコア統計の関数を行っています。ユーザーは、フロントデスクを介して関連するパラメーターを設定し、バックグラウンドでリアルタイムでカウントしてデータを返します。比較的言えば、まだ多くの統計関数があるので、ここでそれらを要約しましょう。
最高のユーザーエクスペリエンスは、すべての操作がリアルタイムでデータを表示できることです。 3秒以内に、ユーザーの許容範囲内にある必要があります。したがって、製品を作成するには、ユーザーインタラクション設計を考慮するだけでなく、バックエンドの最適化も不可欠です。
上記の5つの統計を単純に見ることができます。全体として、まだかなりの統計があります。最も重要なことは、リアルタイム、リアルタイム、リアルタイムであることです(重要なことは3回)。明らかに、タイミングタスクは非現実的です。
変換の前
プログラムロジック
タスクを順次実行します。png
変換後
プログラムロジック
マルチタスク並列処理
マルチタスク並列処理は、マルチコアCPUに適しています。シングルコアCPUによって実行されるマルチスレッドタスクは、特にCPU集約型タスク(コンテキストの切り替えとスレッドの作成と破壊がリソースを消費する)である可能性があります。
コード実装
statsdemo擬似コード:
/***マルチタスク並列統計*作成者kebang.com*作成時間2018年4月16日*/public class statsdemo {final static simpledateformat sdf = new simpledateformat( "yyyy-mm-dd hh:mm:ss");最終的な静的文字列starttime = sdf.format(new date()); public static void main(string [] args)throws arturtedexception {countdownlatch latch = new countdownlatch(5); // 2つのランナー統計統計1 = new Stats( "task a"、1000、latch); stats stats2 = new Stats( "Task B"、2000、latch); stats stats3 = new Stats( "Task C"、2000、latch); stats stats4 = new Stats( "Task D"、2000、latch); stats stats5 = new Stats( "Task E"、2000、latch); stats1.start(); //タスクa stats2.start(); //タスクbの実行を開始stats3.start(); //タスクcはstats4.start(); //タスクdの実行を開始します。完了した実行: " + sdf.format(new date())); } static class statsはthread {string statsname; intランタイム; CountDownLatchラッチ; public stats(string statsname、int runtime、countdownlatch latch){this.statsname = statsname; this.runtime = runtime; this.latch = latch; } public void run(){try {system.out.println(statsname+ "do stats begin at"+ starttime); //タスク実行時間swrep.sleep(runtime)をシミュレート; system.out.println(statsname + "do stats at" + sdf.format(new date())); latch.countdown(); //単一タスクの終了、カウンターは1つ} catch(arturnedexception e){e.printstacktrace(); }}}}統計を同期して返したいので、ここでCountDownLatchクラスを使用します。これはJava 5に追加された新しい同時ツールクラスです。非常に簡単に使用できます。詳細な使用手順は、上記の擬似コードに関連して提供されます。
CountDownLatchは、1つ以上のタスクを同期するために使用され、他のタスクによって実行された一連の操作が完了するのを強制します。 CountDownLatchの典型的な使用法は、プログラムをN独立したソルバータスクに分割し、Nの値でCountDownLatchを作成することです。各タスクが完了すると、CountDownがこのラッチで呼び出され、問題が解決するのを待つタスクはこのラッチの待ち時間を呼び出し、ラッチカウントが終了するまでブロックします。
特定のソースコード解釈については、次のように参照できます。ソースコード分析CountDownLatch
プロジェクトソースコード:https://gitee.com/52itstyle/spring-data-jpa
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。