Kata pengantar
Baru -baru ini, saya melakukan fungsi statistik skor asli. Pengguna menetapkan parameter yang relevan melalui meja depan, dan menghitung secara real time di latar belakang dan mengembalikan data. Secara relatif, masih ada banyak fungsi statistik, jadi mari kita ringkas di sini.
Pengalaman pengguna terbaik adalah bahwa setiap operasi dapat menampilkan data secara real time. Dalam 3 detik, itu harus berada dalam kisaran toleransi pengguna. Oleh karena itu, membuat produk tidak hanya membutuhkan pertimbangan desain interaksi pengguna, tetapi juga optimasi back-end sangat diperlukan.
Anda cukup melihat 5 statistik di atas. Secara keseluruhan, masih ada cukup banyak statistik. Yang paling penting adalah menjadi real-time, real-time, dan real-time (katakanlah hal-hal penting tiga kali). Jelas, tugas waktu tidak realistis.
Sebelum transformasi
Logika Program
Jalankan tugas secara berurutan.png
Setelah transformasi
Logika Program
Multitasking Paralel Processing.png
Pemrosesan paralel multitasking cocok untuk CPU multi-core. Tugas multi-threaded yang dilakukan oleh CPU inti tunggal mungkin kontraproduktif (switching konteks dan penciptaan dan kehancuran utas akan mengkonsumsi sumber daya), terutama tugas intensif CPU.
Implementasi Kode
Statsdemo Kode semu:
/*** Statistik paralel multitasking* pencipta kebang.com* waktu penciptaan 16 April 2018*/statistik kelas publik {final static SimpleDateFormat SDF = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss"); string statis final startTime = sdf.format (new date ()); public static void main (string [] args) melempar InterruptedException {countDownlatch latch = NEW COUNTDOWNLATCH (5); // Dua pelari stats1 = statistik baru ("Tugas A", 1000, Latch); Statistik Stats2 = statistik baru ("Tugas B", 2000, kait); Statistik statistik3 = statistik baru ("Tugas C", 2000, kait); Statistik statistik = statistik baru ("Tugas D", 2000, kait); Statistik statistik5 = statistik baru ("Tugas E", 2000, kait); stats1.start (); // Tugas A mulai mengeksekusi stats2.start (); // Tugas B mulai mengeksekusi stats3.start (); // Tugas C mulai melaksanakan stats4.start (); // Tugas D mulai mengeksekusi statistik. Statistik. sdf.format (tanggal baru ())); } statistik kelas statis memperluas thread {string statsname; int runtime; Latch Countdownlatch; statistik publik (string statsname, int runtime, countdownlatch latch) {this.statsname = statsname; this.runtime = runtime; this.latch = latch; } public void run () {coba {System.out.println (StatSname+ "Do Stats Mulai dari"+ startTime); // Simulasikan utas waktu eksekusi tugas. Sleep (runtime); System.out.println (StatSname + "Do Stats Complete at" + sdf.format (new date ())); latch.countdown (); // Tugas tunggal berakhir, penghitung dikurangi dengan satu} tangkapan (interruptedException e) {e.printstacktrace (); }}}}Karena kami ingin mengembalikan statistik secara serempak, kami menggunakan kelas Countdownlatch di sini, yang merupakan kelas alat bersamaan baru yang ditambahkan dalam Java 5. Sangat mudah digunakan. Langkah-langkah penggunaan terperinci diberikan dengan mengacu pada pseudo-code di atas.
Countdownlatch digunakan untuk menyinkronkan satu atau lebih tugas, memaksa mereka untuk menunggu satu set operasi yang dilakukan oleh tugas lain untuk diselesaikan. Penggunaan khas Countdownlatch adalah untuk membagi suatu program menjadi tugas -tugas pemecah independen dan membuat Countdownlatch dengan nilai N. Ketika setiap tugas selesai, Countdown akan dipanggil pada kait ini, dan tugas yang menunggu masalah untuk diselesaikan akan memanggil menunggu kait ini dan memblokir mereka sendiri sampai jumlah kait selesai.
Untuk interpretasi kode sumber tertentu, Anda dapat merujuk pada: Analisis Kode Sumber Countdownlatch
Kode Sumber Proyek: https://gitee.com/52itstyle/spring-data-jpa
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.