프로세스
현재 실행중인 응용프로그램의 실행단위 (작업관리자-프로세스)
foreground process: 눈에 보이는 프로그램
background process: 프로그램이 원활히 잘 실행될 수 있도록 지원해주는 프로그램
ex) 줌, 이클립스, 메모장 ,,,
스레드
응용프로그램 내부에서 실행되는 최소 실행 단위
멀티스레드
여러개의 쓰레드가 모여 동시에 실행되는 것처럼 보임
사용목적
게임프로그램, 실시간으로 문자전송(=채팅),실시간으로 데이터를 보여주는 프로그램
=> 즉 하나의 프로그램이 실행되면 하나의 프로세스가 할당되어 작업단위를 맡고
그 하나의 프로세스는 여러개의 쓰레드가 작업단위를 맡는다.
크롬(하나의 프로세스가 맡는 중)안에 이미지 불러오기 등 여러가지 기능 각각의 작업을 맡는 것이 쓰레드
쓰레드를 자바에서 만들어서 사용하는 방법
(=사용자 정의 쓰레드)
1. Thread 역할을 해주는 쓰레드 클래스 존재(상속) (권장)
1) Thread 클래스를 상속받음-> run()메소드 오버라이딩
2) run()작성 -> 쓰레드의 기능을 부여
3) Thread 객체를 생성 -> start()호출 => 작동
package j210122;
//import java.lang.Thread; //자동으로 기본패키지에 있는 클래스
//1.Thread를 만드는 방법(Thread를 상속), 이름을 부여, 실행하는 방법
public class MultiThread extends Thread {
public MultiThread(String s) {
super(s); //
}
//실시간으로 어떤 기능을 구현할 것인지 정
@Override
public void run() {
// TODO Auto-generated method stub
for(char i='A'; i<='Z';i++) {
try {
Thread.sleep(500); //1000->1초
System.out.print(i);
System.out.println("쓰레드의 이름="+getName());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//상속 -> run()재정의 -> Thread 객체를 생성 -> Thread 가동
/*MultiThread mt = new MultiThread();
mt.setName("임시");*/
MultiThread mt = new MultiThread("임시");
//생성자는 상속되지 않고, 기본생성자가 아닌 매개변수 있는 생성자는 직접 만들어줘야 한다
mt.start();//내부적으로 자동으로 run()메소드를 호출해준다
}
}
Runnable 인터페이스 구현
package j210122;
//2.Runnable 인터페이스 상속-> Thread클래스를 상속받지 못할 경우에 많이 사용(다중상속불가)
//Runnable 인터페이스는 쓰레드를 돌릴 최소한의 기능밖에 없다, 그래서 가능한 Thread클래스를 상속받는 것이 좋다
public class MyThread implements Runnable {
//실시간으로 어떤 기능을 구현할 것인지
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
System.out.println("is Running");
try {
Thread.sleep(500); //1000->1초
System.out.println("쓰레드의 이름="+Thread.currentThread().getName());
//Thread클래스를 상속받지 못해 getName()메소드를 호출하려면 클래스명.~ 써야함
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//1)Runnable 인터페이스를 상속받은 자식클래스의 객체 생성
MyThread my = new MyThread();
//2)Thread 클래스의 객체 생성 -> 3. 생성자 매개변수로 연결
Thread t = new Thread(my,"테스트");//Runnable객체, 쓰레드이름
//3)Thread객체의 start()호출 -> run()
t.start();
//Runnable 인터페이스를 구현한 클래스는 run()메소드를 오버라이딩 할 수 있지만 Thread클래스를
//상속받은 클래스처럼 start()와 같은 메소드는 없다. 따라서 별도의 쓰레드 객체를 생성해주고 구현한
//Runnable 인터페이스를 인자로 넘겨주어야한다.
}
}
쓰레드의 start(), run() 메소드☆☆
'JAVA' 카테고리의 다른 글
[JAVA]네트워크, 프로토콜, properties 객체 (0) | 2021.06.25 |
---|---|
[JAVA] 멀티 스레드, 스레드 동기화 구현하기 (0) | 2021.06.24 |
[JAVA] 제너릭 <?> <? extends T> <? super T> (0) | 2021.06.22 |
[JAVA] 인터페이스 객체 생성하는 3가지 방법 (0) | 2021.06.22 |
[JAVA]List, Set, Map 인터페이스/ 예시 (0) | 2021.06.21 |