ThreadPool 샘플
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; import java.util.concurrent.locks.ReentrantLock; class ThreadInterface implements Runnable { private int idx; // static ReentrantLock Locked = new ReentrantLock(); public ThreadInterface( int index) { idx = index; } @Override public void run() { // Locked.lock(); System.out.println( "Thread " + idx); for ( int i = 0 ; i < 10 ; i++) { System.out.print(i + " " ); try { Thread.sleep( 10 ); } catch (Exception e) { e.printStackTrace(); } } System.out.println( "" ); // Locked.unlock(); } } public class threadSample { static int idx = 0 ; public static void main(String[] args) { // TODO Auto-generated method stub System.out.println( "이거원" ); ThreadFactory tf = new ThreadFactory() { @Override public Thread newThread(Runnable r) { // TODO Auto-generated method stub Thread t = new Thread(r); return t; } }; ExecutorService es = Executors.newFixedThreadPool( 3 , tf); for ( int i = 0 ; i < 4 ; i++) { Runnable r = new ThreadInterface(i); es.execute(r); } es.shutdown(); ThreadInterface r = new ThreadInterface( 0 ); Thread t = new Thread(r); t.start(); //ThreadInterface r1 = new ThreadInterface(0); Thread t1 = new Thread(r); t1.start(); ThreadInterface r1 = new ThreadInterface( 0 ); Thread t2 = new Thread(r1); t2.start(); } } |