멀티 스레딩 및 싱글 스레딩으로 100 개의 숫자를 계산하려고합니다. synchronized 키워드는 한 번에 하나의 스레드 만 허용하기 때문에 (단일 스레드와 비슷합니다), 스레드 생성 및 동기화에 따른 시간 낭비를 무시하면 아래의 두 메서드는 동일한 런타임을 가져야합니다.동기화 된 멀티 스레딩 대 싱글 스레드
멀티 스레딩 동기화 사용 :
public synchronized static void increment() {
sum++;
}
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
increment();
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
increment();
}
}
});
t1.start();;
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(sum);
단일 스레딩 :
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
sum++
}
System.out.println(sum);
}
두 번째 접근 방식에서 't1'이란 무엇입니까? 't3'을 의미합니까? –
예. 나는 그것을 편집했다. @AndyTurner – SHE
"synchronized를 사용한 싱글 스레딩 :"실제로는 멀티 스레드입니다. 메인 스레드와't3'을 가지고 있습니다. 그리고 당신은'동기화'를 사용하지 않습니다. –