Thread에 대한 것들Back-end/Java, Kotlin2021. 7. 14. 09:55
Table of Contents
쓰레드 생성은 아래와 같다. 방식은 크게 두가지이다.
class ThreadSapmle extends Thread {
@Override
public void run() {
StringBuffer sb = new StringBuffer("Running ThreadSample ");
}
}
public Class Main {
public static void main(String[] args) {
ThreadSample th = new ThreadSample();
ThreadSample th2 = new ThreadSample();
th.start();
th2.start();
}
}
class RunnableSapmle implements Runnable {
@Override
public void run() {
StringBuffer sb = new StringBuffer("Running RunnableSapmle ");
}
}
public Class Main {
public static void main(String[] args) {
Runnable rn = new RunnableSampe();
Runnable rn2 = new RunnableSampe();
ThreadSample th = new ThreadSample(rn);
ThreadSample th2 = new ThreadSample(rn2);
th.start();
th2.start();
}
}
synchronized 를 안했을 때 발생하는 대표격 예제
실패한 예제를 먼저 보겠다.
public class ThreadMain {
public static final int ThreadGenNum = 2;
public static final int RetryNum = 5;
public static void main(String[] args) {
for (int i = 0; i < RetryNum; i++) {
runThread();
}
}
public static void runThread() {
ArithmeticThread[] th = new ArithmeticThread[ThreadGenNum];
CmmMemory cmmMemory = new CmmMemory();
for (int i = 0; i < ThreadGenNum; i++) {
th[i] = new ArithmeticThread();
th[i].setThreadGenNum(ThreadGenNum);
th[i].setCmmMemory(cmmMemory);
th[i].start();
}
for (int i = 0; i < ThreadGenNum; i++) {
try {
th[i].join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("cmmMemory.cnt = " + cmmMemory.getCnt());
}
}
성공한 것은 위쪽이다.
'Back-end > Java, Kotlin' 카테고리의 다른 글
IDEA에서 Kotlin을 사용 중 감동한 건에 대해서... (null 검증) (0) | 2023.05.21 |
---|---|
Java ZoneDateTime 에 대해서 (0) | 2023.05.08 |
Annotaion 처리부 구현 (값 주입, Trim) (0) | 2021.04.27 |
Reflection : 그누므 리플렉션이 모야 !! (ft. 애노떼이숀, 쩨네릭) (0) | 2021.04.08 |
[디자인 패턴] Observer (0) | 2021.03.29 |
@philo0407 :: Philo의 다락방
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!