java

JAVA - Thread์ดํ•ดํ•˜๊ธฐ

dev_summer 2020. 11. 9. 15:36
package com.cos.board.test;

// JavaScript๋Š” Function์ด 1๊ธ‰ ๊ฐ์ฒด, ๋ณ€์ˆ˜๋ฅผ ์–ด๋””์„œ๋‚˜ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค. 
// Java์˜ 1๊ธ‰ ๊ฐ์ฒด๋Š”class๊ฐ€ ์œ ์ผ, ํ•จ์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ธธ ์ˆ˜ ์—†๋‹ค.

interface SendEventListener {
	// 1. return ๋ฐ›๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ.
	public abstract void callback(int money);

}

class ํ™˜์ „์†Œ {
	private int money = 10;

	public void send(SendEventListener sendEventListener) { // 2. ํ•จ์ˆ˜๋ฅผ void๋กœ ๋ณ€๊ฒฝ , ์Šค๋ ˆ๋“œ๋ฅผ ์“ฐ๋Š” ์ˆœ๊ฐ„ ๋ฆฌํ„ดํ˜•์€ ์—†๋‹ค. callback, ์ข…๋ฃŒ๋ฅผ ์•Œ๋ ค์คŒ.
		// 3. ํ•ด๋‹น ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ SendEventListener๋ฅผ ์ž…๋ ฅ
//		try {
//			Thread.sleep(3000);
//		} catch (Exception e) {
//			e.printStackTrace();
//		} ๋ฉ”์ธ์Šค๋ ˆ๋“œ๊ฐ€ ์ฃฝ์œผ๋ฉด ๋‹ค๊ฐ™์ด ๋”œ๋ ˆ์ด ๋จ.

		new Thread(new Runnable() {
			// ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ
			@Override
			public void run() {
				try {
					Thread.sleep(3000);
					money += 20;
					// 4. ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ ์ข…๋ฃŒ์‹œ์— callbackํ•จ์ˆ˜ ๋กœ์ถœ
					sendEventListener.callback(money);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}).start(); // ์ต๋ช…์˜ ์Šค๋ ˆ๋“œ, ์Šค๋ ˆ๋“œ๋ฅผ ์“ฐ๋ ค๋ฉด new ํ•ด์•ผํ•จ. start๋ฉ”์†Œ๋“œ๋Š” run์„ ๋ถ€๋ฆ„. new ์Šค๋ ˆ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋Ÿฌ๋„ˆ๋ธ” ํƒ€์ผ“์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•จ.
	}
}

public class Text5 {
	// ๋ฉ”์ธ์“ฐ๋ ˆ๋“œ
	public static void main(String[] args) {
		ํ™˜์ „์†Œ u = new ํ™˜์ „์†Œ();
		u.send(new SendEventListener() { // ํ•จ์ˆ˜๋ฅผ ๋ชป๋„˜๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋„˜๊น€.
			
			@Override
			public void callback(int money) {
			System.out.println("money : "+money);
				
			}
		});
		System.out.println("ํ• ๋ฃฝ!");
	}
	//์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ $('์„ ํƒ์ž').on(๋Œ€๊ธฐ๋ฐ›์„ ์•ก์…˜, ์•ก์…˜์ด ๋‚˜์™“์„๋•Œ ์‹คํ–‰ํ•  ํ•จ์ˆ˜) ์Šค๋ ˆ๋“œ์˜ ๊ฐœ๋…๊ณผ ๋น„์Šทํ•˜๋‹ค.

}