본문 바로가기

Programming Language/JAVA

[JAVA] Sleep클래스 , Process클래스

 

 

● Sleep 클래스

 

public class Test05_Sleep {

	public static void main(String[] args) {
		for(int i=0;i<10;i++) {
			System.out.println(i);
			try {
				Thread.sleep(500); 
			}catch (InterruptedException e) {}
		}
		System.out.println("반복문 탈출");
	}

}

Sleep클래스에 대해 실습해보겠습니다.

대기를 시켜주는지 확인을 위해 for문을 이용해서 0부터 10까지 반복문을 만들어줍니다.
그리고 실행문에 메시지출력에 변수 i를 넣어주고, 예외처리로 Thread(스레드)에있는 메소드 sleep을 호출해줍니다.
호출할때 파라미터로 500을 넘겨줍니다. 500이면 0.5초대기가 되고, 1000이면 1초대기가됩니다.
그리고 10까지 메시지출력이 모두되면 반복문 탈출이되었다고 출력해줍니다.
( try/catch문은 예외처리로써, 다음에 포스팅하겠습니다. )

 

 


 

 

 

Process 클래스

 

 

import java.io.IOException;

public class Test06_Process {

	public static void main(String[] args) throws IOException {
		ProcessBuilder pb = new ProcessBuilder("notepad.exe");
		pb.start();
	}
}

이번에는 Process클래스를 실습해보겠습니다.
일반적으로 로컬PC에서 윈도우+R키를 누르면 입력창이 뜹니다.
이때, notepad라고 입력하고 엔터를 누르면 우리가 알고있는 메모장이 실행되는데요!
자바에서는 ProcessBuilder클래스에서 쉽게 명령어를 통해 실행할수있습니다.
ProcessBuilder클래스의 객체를 생성할때, 명령어를 입력해주고, 뒤에 ".exe"를 입력해줍니다.
그리고나서 start메소드를 호출해서 실행하면 메모장이 실행되는걸 확인할수있습니다.

 

 

 

 

public class Test07_Process {

	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		System.out.print("실행 명령어 입력 : ");
		String ex = sc.next();
		ProcessBuilder pb = new ProcessBuilder(ex);
		pb.start();
	}

}

이번에는 Scanner클래스를 통해 명령어를 입력받아 실행해보겠습니다.
Scanner클래스의 객체생성을 통해 명령어를 입력받고 입력받은 String값을 ex변수에 저장해줍니다.
그리고 ProcessBuilder클래스 객체 생성할때 파라미터로 ex변수를 대입해주고
start메소드를 호출하면 입력받은 명령어가 실행됩니다.

 

 

 

 

 

import java.io.IOException;
import java.util.HashMap;
import java.util.Scanner;

public class Test08_Process {
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		HashMap hm = new HashMap();
		String value, key;
		System.out.println("키입력 : ");
		key = sc.next(); 
		System.out.println("값입력 : ");
		value = sc.next();

		hm.put(key, value);
		System.out.println("실행 명령어 입력 : ");
		String ex = sc.next();
		if (hm.containsKey(ex)) {
			String s = (String) hm.get(ex); 
			ProcessBuilder pb = new ProcessBuilder(s);
			pb.start();
		} else {
			System.out.println("그런 명령어는 없습니다!!");
		}
	}
}

이번에는 HashMap 컬렉션을 통해 키,값을 저장한후, 키값을 입력해서 명령어가 실행되게 해보겠습니다.

우선, HashMap클래스의 객체를 생성하고 키값(key)으로 메모장 또는 계산기를 입력해줍니다.
값변수인 value에는 notepad 또는 calc을 입력해줍니다.
그리고 put메소드를 호출해서 저장해주고, 사용자가 실행할 명령어를 입력하고 ex변수로 저장해줍니다.
if문을 사용해서 만약에 실행할 명령어의 값이 포함되어있다면 get메소드로 ex변수를 파라미터로 넘겨주고
해당 키의 값을 가져와서 s변수에 담아줍니다. 여기서 String타입으로 형변환해주는 이유는 Object클래스형태이기때문에 형변환을 해줍니다. processBuilder 클래스의 객체생성을하고 키의 값으로 받아온 s변수를 인자로 넘겨주고 start메소드를 호출하면 명령어가 실행됩니다.
만약에 else문을 사용해서 사용자로부터 입력받은 ex변수에 맨처음에 HashMap인 hm인스턴스변수에 저장되어있지않다면 "그런 명령어는 없습니다."라는 문장을 출력해줍니다.