프로그래밍/Java

[자바/java] 하나의 list 두 개 스레드 동작 합 구하기

Rolen 2023. 2. 5. 21:30

0부터 99가 담긴 List의 값을 두 개의 스레드로 0~49 / 50~99 의 합을 구한다.

동작은 겹치지 않도록 join()을 사용하도록 한다.

join() 사용 / 미사용

 

package q5;

import java.util.ArrayList;

public class Q5 extends Thread {
	ArrayList<Integer> list;
	static int index = 0;
	static int sum = 0;
	Q5(ArrayList lst) {
		list = lst;
	}
	public void run() {
		for (int i = 0; i < 50; i++) {
			sum += list.get(index);
			index++;
		}
		System.out.println(getName()+ " 종료, 현재 index: " + index);
		System.out.println(getName()+ " 종료, 현재 sum_total: " + sum);
	}
	public static void main(String[] args) {
		ArrayList<Integer> list1 = new ArrayList<>();
		for (int i = 0; i < 100; i++) {
			list1.add(i);
		}
		Q5 t1 = new Q5(list1);
		Q5 t2 = new Q5(list1);
		t1.start();
		try {
			t1.join();
		} catch(Exception e) {
			System.out.println(e.toString());
		}
		t2.start();
	}
}

 

728x90