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