일반적으로 thread 를 실행하는 방법
일반적으로 thread 를 실행하는 방법은 다음과 같다
final static int AAV_GET_MSG_BUFFER_MAX = 301;
int mySend(String msg) {
final int[] r = new int[1];
r[0] = 0;
Thread th = new Thread(new Runnable() {
@Override
public void run() {
CGMessage cgMsg = new CGMessage(7);
cgMsg.setMsgStatus(AAV_CG_MSG_START_END);
cgMsg.setOut(getConnectedOutStream());
cgMsg.setIn(getConnectedInStream());
r[0] = cgMsg.sendToPeer(); if (r[0] < 0) return;
}
});
th.start();
try { th.join(); } catch (InterruptedException e) { }
return r[0];
}
thread 를 선언과 동시에 안에서 할일을 정해서 start, join 같은걸 해주면 된다.
main thread 의 값을 넘겨받으며 실행하는 방법
그런데 main thread 의 값을 넘겨줘야 할 일이 생긴다면?
Runnable class 를 다시 설정해주는 식으로 진행해야 한다.
public class MsgRunnable implements Runnable {
private CGMessage msg;
final int[] r = new int[1];
public MsgRunnable(CGMessage msg) {
this.msg = msg;
}
@Override
public void run() {
r[0] = 0;
msg.setOut(getConnectedOutStream());
msg.setIn(getConnectedInStream());
msg.setBufferSize(getConnectedBufferSize());
r[0] = msg.sendToPeer(); if (r[0] < 0) return;
}
}
int mySendCG(CGMessage msg) {
Thread th = new Thread(new MsgRunnable(msg));
th.start();
try { th.join(); } catch (InterruptedException e) { }
return 1;
}
MyRunnable class 를 새로 만든 후 받고싶은 값을 지역변수로 저장해주는 변수를 만들어서
생성자로 받은 msg를 지역변수에 저장해준다
그 다음 하고싶은 일을 run 멤버 안에서 진행해주면 된다
'개발 > Java' 카테고리의 다른 글
[Java] int 에 숫자 2개 넣어 보내기 (<<, >> 연산) (0) | 2023.04.11 |
---|---|
[Java] bytetohex hextobyte 코드 (0) | 2023.04.11 |
[Java] 추상화란 (0) | 2023.03.03 |
[Java] 상속(Inheritance) 이란, super 란 (0) | 2023.03.03 |
[Java] 다형성(polymorphism) 이란 (0) | 2023.03.03 |