บทความนี้แบ่งปันการใช้งานอย่างง่าย ๆ ของ Java multithreading และตัวอย่างพูลเธรดสำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
1. วิธีการใช้งานสองวิธีของมัลติเธรด
1. มัลติเธรดสืบทอดคลาสเธรด
/ *** การใช้งานง่าย ๆ ของการสืบทอดมัลติเธรดของคลาสเธรด*/ คลาสสาธารณะ extthread ขยายเธรด {โมฆะสาธารณะเรียกใช้ () {สำหรับ (int i = 0; i <100; i ++) {system.out.println (getName ()+"-"+i); }} โมฆะคงที่สาธารณะ (สตริง arg []) {สำหรับ (int i = 0; i <100; i ++) {system.out.println (thread.currentthread (). getName ()+"-"+i); if (i == 50) {new extthread (). start (); ใหม่ extthread (). start (); -2. การใช้งานมัลติเธรดของอินเตอร์เฟส Runnable
/ *** อินสแตนซ์มัลติเธรดที่ใช้งานอินเตอร์เฟส runable*/ คลาสสาธารณะ RunThread ใช้งาน runnable {public void run () {สำหรับ (int i = 0; i <100; i ++) {system.out.println (เธรด }} โมฆะคงที่สาธารณะ (สตริง arg []) {สำหรับ (int i = 0; i <100; i ++) {system.out.println (thread.currentthread (). getName ()+"-"+i); if (i == 50) {runThread rt = new runThread (); เธรดใหม่ (rt, "thread1 ใหม่"). start (); เธรดใหม่ (RT, "New Thread2"). Start (); -2. การใช้งานพูลเธรดอย่างง่าย
// ใช้การทดสอบคลาสอินเทอร์เฟซที่ใช้งานได้ดำเนินการ onplunable runnable {public void run () {สำหรับ (int i = 0; i <100; i ++) {system.out.println (thread.currentthread (). getName () + "ฉัน:" + i); }}} คลาสสาธารณะ ThreadPoolTest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {// สร้างพูลเธรดที่มีจำนวนเธรดคงที่ executorService pool = executors.newFixedThreadPool (5); // ส่งสามเธรดไปยังพูลพูลเธรด submit (testthread ใหม่ ()); pool.submit (testthread ใหม่ ()); pool.submit (testthread ใหม่ ()); // ปิดพูลพูลเธรด shutdown (); -3. Java Crawlers ใช้อินสแตนซ์พูลเธรด
/ *** พูลเธรด Dispatch Crawler*/ Public Class ThreadPool {Public Static HashMap <String, Spiders> StatusMap = HashMap ใหม่ <String, Spiders> (); // เก็บรวบรวมข้อมูลคีย์คือรหัสของตัวรวบรวมข้อมูลค่าคือพูลเธรดของ hashmap แบบคงที่คงที่ <จำนวนเต็ม, threadpoolexecutor> threadmap = hashmap ใหม่ <จำนวนเต็ม, threadpoolexecutor> (); // สร้างเธรดพูลแบบคงที่ threadpoolexecutor threadpool = new Threadpoolexecutor (200, 230,80000L, TimeUnit.seconds, arrayblockingqueue ใหม่ <Runnable> (10), Threadpoolexecutor.CallerRrunspolicy (); Public Static Void Executethread (Spiders Spider) {statusmap.put (string.valueof (Spider.getId ()), แมงมุม); // ตัวรวบรวมข้อมูลนั้นถูกต้องถ้า (Spider.getFlag () == 0) {ถ้า (Spider.getStatus () == 0) {// ระบุว่าตัวรวบรวมข้อมูลเข้าสู่สถานะการรวบรวมข้อมูล if (threadmap.get (spider.getId ()) == null) {detailpool = new Threadpoolexecutor (30, 80, 80000L, TimeUnit.seconds, arrayblockingqueue ใหม่ <Runnable> (10), ใหม่ threadmap.put (Spider.getId (), DetailPool); threadpool.execute (ใหม่ ThreadRun (Spider, ThreadMap)); }}}}} // ใช้การใช้งานคลาสอินเตอร์เฟส Runnable threadRun runnable {private hashmap <จำนวนเต็ม, threadpoolexecutor> threadpoolmap; แมงมุมส่วนตัวแมงมุม; Public ThreadRun (Spiders Spider, HashMap <Integer, ThreadPoolexecutor> ThreadPoolMap) {this.threadPoolMap = ThreadPoolMap; this.spider = Spider; } // threadexecution Body Public Public Run () {ลอง {ถ้า ("rong360" .equals (Spider.getWebsite ())) {ใหม่ rongthread (threadpoolmap.get (spider.getid ()), Spider) .startSpider (); } อื่นถ้า ("xxgg_sd" .equals (Spider.getWebsite ()))) {ใหม่ Spider_shandong (ThreadPoolMap.get (Spider.getId ()), Spider) .startSpider (); } อื่นถ้า ("xxgg_gz" .equals (Spider.getWebsite ()))) {ใหม่ Spider_Guizhou (threadpoolmap.get (Spider.getId ()), Spider) .startspider (); } อื่นถ้า ("sx" .equals (Spider.getWebsite ()))) {ใหม่ spidersx (แมงมุม) .startspider (); } อื่นถ้า ("baidu" .equals (Spider.getWebsite ()))) {ใหม่ SpiderBaidu (Spider) .StartSpider (); } อื่นถ้า ("11315" .Equals (Spider.getWebsite ()))) {ใหม่ Spider11315ByName (Spider) .StartSpider (); }} catch (exception e) {e.printstacktrace (); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น