java2019. 9. 21. 15:04

ex)


package com.test.testapplication;




public class TestApplication {
	
	
	public static void main(String [] args) {
			
		TestApplication test = new TestApplication();
		test.doTest();
	}
	
	
	private int count;
	StringBuffer sBuffer = new StringBuffer();
	StringBuilder sBuilder = new StringBuilder();
	
	
	private   void doTest() {

		count=0;
		
		
		ThreadSample t1= new ThreadSample("t1");
		ThreadSample t2= new ThreadSample("t2");
	
		
		System.out.println("t1 : state :" + t1.getState());
		t1.start();
		
		System.out.println("t1 : state :" + t1.getState());
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e1) {
			e1.printStackTrace();
		}
		
		System.out.println("t1 : state :" + t1.getState());
		
		
		try {			
			
			t1.join();
			
		}catch(InterruptedException e ) {
			e.printStackTrace();
		}
		t1.interrupt();
		
		System.out.println("t1 : state :" + t1.getState());
		
		
	}
	
	
	/*참조해야할 변수가 여러개일 경우 , 서로 다른 lock을 사용한다.*/
	private Object builderLock = new Object();
		
	class ThreadSample extends Thread{
		
		
		public ThreadSample(String name) {
			super(name);
			
		}
		@Override
		public void run() {
			
			
			
			int loop = 0;
			while( loop < 10) {
				++loop;
				synchronized(builderLock) {
					//System.out.println( this.getName() + " run!"  + " count :  "+(count++));
					try {
						Thread.sleep(5000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			
			}
	
		}
	}

}

 

출처 : 자바의 신

'java' 카테고리의 다른 글

FileWriter 및 BufferedWriter 텍스트기반 처리  (0) 2019.09.22
FileFilter , FileNameFilter interface  (0) 2019.09.21
synchronized 정리  (0) 2019.09.21
Thread Priority 와 Daemon Thread  (0) 2019.09.17
Runnable interface와 Thread class  (0) 2019.09.17
Posted by easy16