이 기사는 참조를 위해 Java Multithreading 및 스레드 풀 예제의 간단한 구현을 공유합니다. 특정 내용은 다음과 같습니다
1. 멀티 스레딩의 두 구현 방법
1. 멀티 스레딩은 스레드 클래스를 상속합니다
/ *** 스레드 클래스의 멀티 스레딩 상속의 간단한 구현*/ public class extthread는 스레드 {public void run () {for (int i = 0; i <100; i ++) {system.out.println (getName ()+"-"+i); }} public static void main (string arg []) {for (int i = 0; i <100; i ++) {System.out.println (thread.currentThread (). getName ()+"-"+i); if (i == 50) {new extthread (). start (); new extthread (). start (); }}}}}2. 런닝 가능한 인터페이스의 멀티 스레딩 구현
/ *** 실행 가능한 인터페이스를 구현하는 멀티 스레딩 인스턴스*/ public class runthread는 runnable {public void run () {for (int i = 0; i <100; i ++) {system.out.println (thread.currentthread (). getName ()+"-"+i); }} public static void main (string arg []) {for (int i = 0; i <100; i ++) {System.out.println (thread.currentThread (). getName ()+"-"+i); if (i == 50) {runthread rt = new Runthread (); 새 스레드 (RT, "New Thread1"). start (); 새 스레드 (RT, "New Thread2"). start (); }}}}2. 스레드 풀의 간단한 구현
// 실행 가능한 인터페이스 클래스 구현 테스트 스레드는 runnable {public void run () {for (int i = 0; i <100; i ++) {system.out.println (thread.currentThread (). getName () + "I IS :" + i); }}} public class strandpooltest {public static void main (string [] args) {// 고정 된 수의 스레드가있는 스레드 풀 생성 executorService pool = executors.newfixedThreadPool (5); // 스레드 풀 풀에 3 개의 스레드를 제출합니다 .Submit (new TestThread ()); pool.submit (new testthread ()); pool.submit (new testthread ()); // 스레드 풀 풀을 닫습니다 .Shutdown (); }}3. Java 크롤러는 스레드 풀 인스턴스를 사용합니다
/ *** 크롤러 디스패치 스레드 풀*/ public class 스레드 풀 {public static hashmap <spiders> statusMap = new Hashmap <string, spiders> (); // 크롤러 스토어 크롤러, 키는 크롤러의 ID입니다. 값은 크롤러의 스레드 풀 정적 해시 맵 <정수, ThreadPooleExecutor> ThreadMap = new Hashmap <Integer, ThreadPoolexecutor> (); // 스레드 풀 정적 스레드 Poolexecutor ThreadPool = New ThreadPoolexecutor (200, 230,80000L, TimeUnit.seconds, new ArrayBlockingqueue <Runnable> (10), New ThreadPoolexecutor.callerRunspolicy ()); public static void executethread (Spiders Spider) {statusMap.put (string.valueof (spider.getId ()), Spider); // 크롤러는 if (spider.getflag () == 0) {if (spider.getStatus () == 0) {// 크롤러가 크롤링 스레드 스레드poolexexexecutor detailpool = null을 입력 함을 나타냅니다. if (threadmap.get (spider.getid ()) == null) {detailpool = new ThreadPoolexecutor (30, 80, 80000L, TimeUnit.seconds, new ArrayBlockingQueue <Runnable> (10), New ThreadPooleExecutor.callerRunspolicy (); ThreadMap.put (Spider.getId (), DetailPool); ThreadPool.Execute (New ThreadRun (Spider, ThreadMap)); }}}}} // runnable 인터페이스 클래스 스레드 런 구현 구현 실행 가능 {private hashmap <integer, threadpoolexecutor> threadpoolmap; 개인 거미 거미; public threadrun (Spiders Spider, Hashmap <Integer, ThreadPoolexecutor> ThreadPoolMap) {this.threadpoolmap = ThreadPoolMap; this.spider = 거미; } // ThreadExecution body public void run () {try {if ( "rong360".equals (spider.getwebsite ())) {new rongthread (strookpoolmap.get (spider.getid ()) .StartSpider (); } else if ( "xxgg_sd".equals (spider.getwebsite ())))) {new Spider_Shandong (ThreadPoolMap.get (spider.getId ()), spider) .startSpider (); } else if ( "xxgg_gz".equals (spider.getwebsite ())))) {new Spider_guizhou (ThreadPoolmap.get (spider.getId ()), spider) .startSpider (); } else if ( "sx".Equals (spider.getWebSite ())) {new Spidersx (Spider) .startSpider (); } else if ( "baidu".equals (spider.getwebsite ())) {New SpiderBaidu (Spider) .startSpider (); } else if ( "11315".Equals (Spider.GetWebSite ()))) {New Spider11315ByName (Spider) .startSpider (); }} catch (예외 e) {e.printstacktrace (); }}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.