2개의 Thread 중, 한 쓰레드가 돌아가는 동안에만 다른 쓰레드가 돌아가라 구현
하고싶은 것은 웹이 아닌 자바에서 Progress 진행률을 나타내고 싶습니다.
A라는 쓰레드는 ArrayList<String> 안에 있는 값을 2차원배열로 변환하는 메소드를 돌립니다.
B라는 쓰레드는 JProgressBar를 이용하여 진행률을 나타냅니다. [ JProgressBar 또는 ProgressMonitor 사용중]
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
B쓰레드 :
class Progress extends Thread {
@Override
public void run() {
Progressbar.setValue(0);
int count = 0;
while (?) {
count++;
Progressbar.setValue(count);
try {
sleep(?);
}catch(Exception e) {
}
}
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
A 쓰레드 안에 메소드 :
public static String[][] getRowArray(String filename) {
int n = 0;
int k = 0;
List<String> list = getView(filename);
RowArray = new String[getRowNum(filename) + 1][getVerticalNum(filename) + 1];
if (list.size() > 1)
RowArray = aa(filename, list, n, k);
return RowArray;
}
public static String[][] aa(String filename, List<String> list, int n, int k) {
for (int i = 0; i <= getVerticalNum(filename); i++) {
if (n > OpenExcel.getRowNum(filename) || k > list.size()) {
break;
}
if (i % getVerticalNum(filename) == 0 && i != 0) {
RowArray[n][i] = list.get(k);
n++;
k++;
return aa(filename, list, n, k);
} else {
RowArray[n][i] = list.get(k);
k++;
}
}
return RowArray;
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
A쓰레드에서 메소드가 진행되는 동안에만 B쓰레드를 돌리고 싶은데
B 쓰레드 안에 sleep(?) 을 맞춰주던지 count값을 바꿔줘야할것같은데.
while 조건은 제 아무리 바꿔도 count 맥스값이 되면 B쓰레드가 끝나버리더라구요
sleep(?) 을 맞춰주려 메소드가 실행될때의 시간을 구할려고 System.currentTimeMillis() 을 써볼려고 했지만
A쓰레드 안에 메소드가 돌아갈 때 B도 같이 진행을 해야하기때문에 안되구요.. 방법 좀 알려주세요..