JAVA/객체지향

[java/thread] int 배열에 있는 숫자 다 뽑아내서 더하기

java나유 2022. 7. 1. 22:53

이번에 풀어볼 문제는..

int data [] = {1,2,3,4,5,6};

안에서 각각 숫자를 뽑아내서 0이될때까지 구해서 출력하는거다(!)

그러니까.. 이렇게! 

 {1,2,3,4,5,6};-> 1, 2+1, 3+2+1, 4+3+2+1,5+4+3+2+1+,6+5+4+3+2+1 값으로 뽑아내기

 

코드 먼저 고고!

		
	int data[]= {1,2,3,4,5,6}; //먼저 해당 값을 배열해제하여 int로 변환
	plusbox pb=null; //(1)plusbox 복사.. (2)번에서 사용하기 위해 null;로 선언함
	for(int i=0;i<data.length;i++) {
	pb = new plusbox(data[i]); //(2) 
	pb.start(); //Thread 에서 사용되는 run/start(); 
			}
	}
}
class plusbox extends Thread{
	int number = 0; //사실 이건 큰 의미없고 Thread를 사용하기 위해 넣은 것
	
	public plusbox(int no) { //main배열해제 해서 받은 값 (1,2,3,4,5,6)
		this.number = no;
	}
	@Override
	public void run() {	
		int sum=0;
		for(int z=this.number;z>0;z--) {//각 숫자가 0이 될때까지 감소하는 반복문
			sum+=z; //모두 sum에 저장
		}
		System.out.println(sum);
	}
}

결과값

 

결과값이 왜 이렇게 무작위로 출력되었을까요?
이유는..thread를 사용했기 때문입니다.

thread는 출력 때마다 순차적으로 실행되지 않고 무작위로 (동시라고 생각하면 이해하기 쉬움) 실행되어서

이렇게 출력되는거고요. 만약 오름차순이나 내림차순으로 정렬하고 싶다면....

배열로 받아서 정렬하면 됩니다!

728x90