Java Thread

๋™์‹œ์„ฑ

  • Concurrency

    • Logical

    • Single Core / Multi Core

  • Parallel

    • Physical

    • Multi Core

Java๋Š” JVM (Java Virtual Machine) ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ ๋ฌผ๋ฆฌ์ ์ธ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋จ!

Java Thread ๋ž€?

  • Process

    : ๊ฐœ๋ณ„์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ (Eclipse, Messenger, etc)

  • Thread

    : Process๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์€ ์‹คํ–‰ ๋‹จ์œ„ (Messenger = chat + file transfer)

  • Multi-process

    : ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ process๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ

  • Multi-thread

    : ํ•˜๋‚˜์˜ process์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ thread๊ฐ€ ๋™์‹œ์— ๋™์ž‘ํ•˜๋Š” ๊ฒƒ

Java Thread ์ƒ์„ฑ

๋ฐฉ๋ฒ• 1) Runnable interface ์ƒ์„ฑ

  • Runnable interface

    ex)

    package virus;
    
    public class CoronaRunnable implements Runnable{
    
    	int num;
    	public CoronaRunnable() {}
    	public CoronaRunnable(int num) {
    		this.num = num;
    	}
    	@Override
    	public void run() {
    		for (int i =0 ; i< 10000 ; i++) {
    			int j = i*100;
    		}
    		System.out.println(num);
    	}
    }

  • Test

    package app;
    
    import virus.CoronaRunnable;
    
    public class CoronaThreadTest {
    	public static void main(String[] args) {
    		for (int i = 0 ; i <1000 ; i++) {
    			CoronaRunnable cr = new CoronaRunnable(i);
    			Thread t = new Thread(cr);
    			// Thread ๋™์ž‘์‹œํ‚ค๊ธฐ
    			t.start();
    		}
    	}
    }

๋ฐฉ๋ฒ• 2) Thread class ์ƒ์„ฑ

  • Thread class

    ex)

package virus;

public class CoronaThread extends Thread{ int num;

public CoronaThread() {}
public CoronaThread(int num) {
	this.num = num;
}

@Override
public void run() {
	for (int i = 0 ; i < 10000 ; i++) {
		int j = i*100;
	}
	System.out.println(num);
}

}


<br>

- Test

```java
import virus.CoronaRunnable;
import virus.CoronaThread;

public class CoronaThreadTest {
	public static void main(String[] args) {
		for (int i = 0 ; i <1000 ; i++) {
			CoronaThread ct = new CoronaThread(i);
			ct.start();
		}
	}
}

Thread ์‹คํ–‰ ์‹œ memory ๊ตฌ์กฐ

Last updated

Was this helpful?