ล่าสุด ฉันกำลังดูแลโปรเจ็กต์ Java และในกลุ่มเรากำลังพูดคุยเกี่ยวกับข้อดีข้อเสียของ Java! น่าเสียดายที่แฟนตัวยงของ Java บางคนมักอ้างว่าประสิทธิภาพไม่ได้แย่เท่ากับ C++ อีกต่อไป และไลบรารีมาตรฐานจำนวนมากเขียนโดยผู้เชี่ยวชาญ มีความเสถียรเพียงใด เป็นต้น ฉันเพียงแค่ศึกษามันอย่างละเอียด และหนึ่งในคำแนะนำที่พวกเขาให้ฉันก็คือ ในการส่งข้อความระหว่างเธรด ก็เพียงพอแล้วที่จะใช้ BlockingQueue ซึ่งถูกห่อหุ้มด้วยภาษาจาวา
เพียงพอแล้ว มาเขียนโค้ดเพื่อทดสอบกันดีกว่า
ฐานการนำเข้า MyRunnable;
การทดสอบในชั้นเรียนสาธารณะ
-
โมฆะสาธารณะคง main (String [] args)
-
BlockingQueue<Integer> คิว = ใหม่ LinkedBlockingQueue<Integer>();
java.lang.Runnable r = MyRunnable ใหม่ (คิว);
เธรด t = เธรดใหม่ (r);
t.เริ่มต้น();
ในขณะที่(จริง)
-
พยายาม
-
ในขณะที่(จริง)
-
สำหรับ(int i =0;i < 10,000;i++)
-
คิวข้อเสนอ (i);
-
-
-
จับ (ยกเว้น e)
-
e.printStackTrace();
-
-
-
-
//แพ็คเกจที่ต้องเพิ่ม
ฐานบรรจุภัณฑ์
นำเข้า java.lang.Runnable;
นำเข้า java.util.concurrent.*;
นำเข้า java.util.*;
MyRunnable คลาสสาธารณะใช้งาน Runnable
-
MyRunnable สาธารณะ (คิว BlockingQueue <Integer>)
-
this.queue = คิว;
-
การรันโมฆะสาธารณะ ()
-
วันที่ d = วันที่ใหม่ ();
เวลาเริ่มต้นนาน = d.getTime();
System.err.println (เวลาเริ่มต้น);
นับจำนวน = 0;
ในขณะที่(จริง)
-
พยายาม
-
จำนวนเต็ม i = this.queue.poll();
ถ้า(i != null)
-
นับ++;
-
ถ้า (นับ == 100,000)
-
วันที่ e = วันที่ใหม่ ();
เวลาสิ้นสุดที่ยาวนาน = e.getTime();
System.err.println(นับ);
System.err.println (เวลาสิ้นสุด);
System.err.print (เวลาสิ้นสุด - เวลาเริ่มต้น);
หยุดพัก;
-
-
จับ (ยกเว้น e)
-
-
-
-
คิว BlockingQueue <Integer> ส่วนตัว;
-
ฉันใช้ข้อเสนอและการสำรวจความคิดเห็นในโค้ดทดสอบด้านบน มาดูฟังก์ชันการใช้งานทั้งสองนี้กัน