이 포스팅은 자바의 신 1,2권의 내용으로 포스팅 되었습니다.
실행
시켜서, 동작하게 만들면 이것을 프로세스
라 한다./* 간단한 쓰레드 프로그램 */
import java.util.Random;
public class ThreadTest extends Thread {
private int id = -1;
public ThreadTest(int id){
this.id = id;
}
public void run(){
System.out.println( id + "번 쓰레드 동작 중..." );
Random r = new Random(System.currentTimeMillis());
try {
long s = r.nextInt(3000); // 3초내로 끝내자.
Thread.sleep(s); // 쓰레드를 잠시 멈춤
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println( id + "번 쓰레드 동작 종료..." );
}
public static void main(String[] args) {
System.out.println("Start main method.");
for(int i = 0 ; i < 10 ; i++ ){
ThreadTest test = new ThreadTest(i);
test.start(); // 이 메소드를 실행하면 Thread 내의 run()을 수행한다.
}
System.out.println("End main method.");
}
}
Start main method.
0번 쓰레드 동작 중...
2번 쓰레드 동작 중...
1번 쓰레드 동작 중...
3번 쓰레드 동작 중...
4번 쓰레드 동작 중...
5번 쓰레드 동작 중...
6번 쓰레드 동작 중...
7번 쓰레드 동작 중...
End main method.
9번 쓰레드 동작 중...
8번 쓰레드 동작 중...
1번 쓰레드 동작 종료...
4번 쓰레드 동작 종료...
8번 쓰레드 동작 종료...
7번 쓰레드 동작 종료...
9번 쓰레드 동작 종료...
6번 쓰레드 동작 종료...
0번 쓰레드 동작 종료...
2번 쓰레드 동작 종료...
5번 쓰레드 동작 종료...
3번 쓰레드 동작 종료...
/* 간단한 쓰레드 프로그램(변경 1) */
import java.util.Random;
public class ThreadTest extends Thread {
// index 변수를 추가해서 스레드가 동작시에 해당 변수를 증가시키도록 할것이다.
private static int index = 0;
private int id = -1;
public ThreadTest(int id){
this.id = id;
}
public void run(){
System.out.println( id + "번 쓰레드 동작 중..." );
Random r = new Random(System.currentTimeMillis());
try {
long s = r.nextInt(3000); // 3초내로 끝내자.
Thread.sleep(s); // 쓰레드를 잠시 멈춤
index++; // index 변수를 증가
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println( id + "번 쓰레드 동작 종료..." );
}
public static void main(String[] args) {
System.out.println("Start main method.");
for(int i = 0 ; i < 10 ; i++ ){
ThreadTest test = new ThreadTest(i);
test.start(); // 이 메소드를 실행하면 Thread 내의 run()을 수행한다.
}
System.out.println("current Index: "+ index); // index의 값을 반환
System.out.println("End main method.");
}
}
ain method.
0번 쓰레드 동작 중...
1번 쓰레드 동작 중...
2번 쓰레드 동작 중...
3번 쓰레드 동작 중...
4번 쓰레드 동작 중...
5번 쓰레드 동작 중...
6번 쓰레드 동작 중...
7번 쓰레드 동작 중...
current Index: 0
8번 쓰레드 동작 중...
9번 쓰레드 동작 중...
End main method.
5번 쓰레드 동작 종료...
6번 쓰레드 동작 종료...
1번 쓰레드 동작 종료...
0번 쓰레드 동작 종료...
3번 쓰레드 동작 종료...
2번 쓰레드 동작 종료...
4번 쓰레드 동작 종료...
8번 쓰레드 동작 종료...
9번 쓰레드 동작 종료...
7번 쓰레드 동작 종료...
/* 간단한 쓰레드 프로그램(변경 2) */
import java.util.Random;
public class ThreadTest extends Thread {
// index 변수를 추가해서 스레드가 동작시에 해당 변수를 증가시키도록 할겁니다.
private static int index = 0;
private int id = -1;
public ThreadTest(int id){
this.id = id;
}
public void run(){
System.out.println( id + "번 쓰레드 동작 중..." );
Random r = new Random(System.currentTimeMillis());
try {
long s = r.nextInt(3000); // 3초내로 끝내자.
Thread.sleep(s); // 쓰레드를 잠시 멈춤
index++; // index 변수를 증가
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println( id + "번 쓰레드 동작 종료..." );
}
public static void main(String[] args) {
System.out.println("Start main method.");
for(int i = 0 ; i < 10 ; i++ ){
ThreadTest test = new ThreadTest(i);
test.start(); // 이 메소드를 실행하면 Thread 내의 run()을 수행한다.
}
try {
Thread.sleep(5000); // 쓰레드가 종료할 때까지의 충분한 시간을 기다림
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("current Index: "+ index); // index의 값을 반환
System.out.println("End main method.");
}
}
Start main method.
0번 쓰레드 동작 중...
1번 쓰레드 동작 중...
2번 쓰레드 동작 중...
3번 쓰레드 동작 중...
4번 쓰레드 동작 중...
5번 쓰레드 동작 중...
6번 쓰레드 동작 중...
7번 쓰레드 동작 중...
8번 쓰레드 동작 중...
9번 쓰레드 동작 중...
9번 쓰레드 동작 종료...
8번 쓰레드 동작 종료...
6번 쓰레드 동작 종료...
7번 쓰레드 동작 종료...
1번 쓰레드 동작 종료...
2번 쓰레드 동작 종료...
3번 쓰레드 동작 종료...
0번 쓰레드 동작 종료...
5번 쓰레드 동작 종료...
4번 쓰레드 동작 종료...
current Index: 7
End main method.
/* 간단한 쓰레드 프로그램(변경 3) */
import java.util.ArrayList;
import java.util.Random;
public class ThreadTest extends Thread {
private static int index = 0;
private int id = -1;
public ThreadTest(int id){
this.id = id;
}
public void run(){
System.out.println( id + "번 쓰레드 동작 중..." );
Random r = new Random(System.currentTimeMillis());
try {
long s = r.nextInt(3000); // 3초내로 끝내자.
Thread.sleep(s); // 쓰레드를 잠시 멈춤
index++; // index 변수를 증가시킵니다.
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println( id + "번 쓰레드 동작 종료..." );
}
public static void main(String[] args) {
System.out.println("Start main method.");
ArrayList<Thread> threadList = new ArrayList<Thread>();
for(int i = 0 ; i < 10 ; i++ ){
ThreadTest test = new ThreadTest(i);
test.start(); // 이 메소드를 실행하면 Thread 내의 run()을 수행한다.
threadList.add(test); // 생성한 쓰레드를 리스트에 삽입
}
for(int i = 0 ; i < threadList.size(); i++){
try {
threadList.get(i).join(); // 쓰레드의 처리가 끝날때까지 기다린다.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("current Index: "+ index); // index의 값을 반환
System.out.println("End main method.");
}
}
Start main method.
0번 쓰레드 동작 중...
1번 쓰레드 동작 중...
2번 쓰레드 동작 중...
3번 쓰레드 동작 중...
4번 쓰레드 동작 중...
5번 쓰레드 동작 중...
6번 쓰레드 동작 중...
7번 쓰레드 동작 중...
8번 쓰레드 동작 중...
9번 쓰레드 동작 중...
4번 쓰레드 동작 종료...
1번 쓰레드 동작 종료...
6번 쓰레드 동작 종료...
5번 쓰레드 동작 종료...
0번 쓰레드 동작 종료...
2번 쓰레드 동작 종료...
3번 쓰레드 동작 종료...
8번 쓰레드 동작 종료...
7번 쓰레드 동작 종료...
9번 쓰레드 동작 종료...
current Index: 9
End main method.
/* 간단한 쓰레드 프로그램(변경 4) */
import java.util.ArrayList;
import java.util.Random;
public class ThreadTest extends Thread {
private static int index = 0;
private int id = -1;
public ThreadTest(int id){
this.id = id;
}
public void run(){
System.out.println( id + "번 쓰레드 동작 중..." );
Random r = new Random(System.currentTimeMillis());
try {
long s = r.nextInt(3000); // 3초내로 끝내자.
Thread.sleep(s); // 쓰레드를 잠시 멈춤
setIndex();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println( id + "번 쓰레드 동작 종료..." );
}
public synchronized static void setIndex(){
index++; // index 변수를 증가시킵니다.
}
public static void main(String[] args) {
System.out.println("Start main method.");
ArrayList<Thread> threadList = new ArrayList<Thread>();
for(int i = 0 ; i < 10 ; i++ ){
ThreadTest test = new ThreadTest(i);
test.start(); // 이 메소드를 실행하면 Thread 내의 run()을 수행한다.
threadList.add(test); // 생성한 쓰레드를 리스트에 삽입
}
for(int i = 0 ; i < threadList.size(); i++){
try {
threadList.get(i).join(); // 쓰레드의 처리가 끝날때까지 기다립니다.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("current Index: "+ index); // index의 값을 반환
System.out.println("End main method.");
}
}
Start main method.
0번 쓰레드 동작 중...
1번 쓰레드 동작 중...
2번 쓰레드 동작 중...
3번 쓰레드 동작 중...
4번 쓰레드 동작 중...
5번 쓰레드 동작 중...
6번 쓰레드 동작 중...
7번 쓰레드 동작 중...
8번 쓰레드 동작 중...
9번 쓰레드 동작 중...
7번 쓰레드 동작 종료...
9번 쓰레드 동작 종료...
4번 쓰레드 동작 종료...
5번 쓰레드 동작 종료...
3번 쓰레드 동작 종료...
2번 쓰레드 동작 종료...
8번 쓰레드 동작 종료...
6번 쓰레드 동작 종료...
1번 쓰레드 동작 종료...
0번 쓰레드 동작 종료...
current Index: 10
End main method.
import java.util.ArrayList;
public class Test implements Runnable {
int seq;
public Test(int seq) {
this.seq = seq;
}
public void run() {
System.out.println(this.seq+" thread start.");
try {
Thread.sleep(1000);
}catch(Exception e) {
}
System.out.println(this.seq+" thread end.");
}
public static void main(String[] args) {
ArrayList<Thread> threads = new ArrayList<Thread>();
for(int i=0; i<10; i++) {
Thread t = new Thread(new Test(i));
t.start();
threads.add(t);
}
for(int i=0; i<threads.size(); i++) {
Thread t = threads.get(i);
try {
t.join();
}catch(Exception e) {
}
}
System.out.println("main end.");
}
}
reference
GODOFJAVA 2 (자바의신2)
https://jdm.kr/blog/72
https://wikidocs.net/230