자바기초(쓰레드)

bitna's study note·2022년 5월 30일
0

자바

목록 보기
89/119

5월 20일 내용정리_1

1.쓰레드를 만드는 방법에는 2가지가 있음
첫번째는 쓰레드를 상속해서 그안에 있는 run()메서드를 재정의하던가,
두번째는 Runnable인터페이스를 구현해서 그안에 있는 run()메서드를 재정의하여 쓰레드를 만든다.
run()메서드 안에는 쓰레드가 작업할 내용을 작성해 준다.

2.쓰레드는 내가 설정한 대로 먼저 시작할수 있는걸 정해 줄수 없음.
쓰레드는 OS스케줄러에 종속되어 스케줄러의 일정에 따라 실행됨

3.Runnable로 쓰레드 만들기
(1)Runnable 인터페이스 구현
run()추상메서드 딱 하나 포함
(2)Thread 생성자로 Runnable 객체 전달
(3)Thread실행 start()메서드로 실행

4.익명클래스 만들기 ->1회성으로 사용시 사용
이름이 없기 때문에 생성자가 없어서 부모의 생성자로 받고 그안에 클래스내용을 구현해줌
메인에서도 객체 한번 쓰고 끝날때 'new 클래스명'

package study_0520;

public class thread05 {
	public static void main(String[] args) {
		//변수를 쓴다는건 다른곳에 쓰겠다는 의미
		
//		//Runnable 생성
//		Runnable video = new thread04(); 
//		Runnable jamak = new thread04_1(); 
//		
//		//Thread 생성->스타트를 쓰기위함
//		Thread rvideo= new Thread(video);
//		Thread rjamak= new Thread(jamak);
//		
//		//Thread start()
//		rvideo.start();
//		rjamak.start();
		
		//위에 3단계를 줄인거
//		new Thread(new thread04()).start();
//		new Thread(new thread04_1()).start();
		
		
		//익명클래스 만들기 ->1회성으로 사용시 사용
		//이름이 없기 때문에 생성자가 없어서 부모의 생성자로 받고 그안에 클래스내용을 구현해줌
		//메인에서도 객체 한번 쓰고 끝날때 'new 클래스명'
//		new Thread(new Runnable() {
//			@Override
//			public void run() {
//				int[] frame = new int[] {1,2,3,4};
//				
//				for(int i=0; i<frame.length; i++) {
//					System.out.print("영화 부분 : " + frame[i]+" - ");
//					
//					try {
//						Thread.sleep(500);//0.5초마다 실행
//					} catch (InterruptedException e) {
//						System.out.println("멈춤을 끝냄");
//						e.printStackTrace();
//					} 
//				}
//			}
//		}).start();
		
		
//		new Thread(new Runnable(){
//
//			@Override
//			public void run() {
//				//영상과 약간의 차이를 두고 실행하게 하도록
//						try {
//							Thread.sleep(10);
//						} catch (InterruptedException e) {
//							e.printStackTrace();
//						}
//						
//						
//						String[] jamak = new String[] {"하나","둘","셋","넷"};
//						
//						//자막 표시 작업
//						for(int j=0; j<jamak.length; j++) {
//					          System.out.println("영화 자막 : " + jamak[j]);
//					    
//					   //자막 찍히는 시간을 0.5초마다 실행하게         
//					     try {
//					  			Thread.sleep(500);
//					  		} catch (InterruptedException e) {
//					  			e.printStackTrace();
//					  		}
//						
//					}
//				
//			}
//		}).start();

	
		
		
		
//		람다식으로 구현
//		메서드가 1개 이고 익명구현 객체이다.
		
		new Thread(()-> {
				int[] frame = new int[] {1,2,3,4};
				
				for(int i=0; i<frame.length; i++) {
					System.out.print("영화 부분 : " + frame[i]+" - ");
					
					try {
						Thread.sleep(500);//0.5초마다 실행
					} catch (InterruptedException e) {
						System.out.println("멈춤을 끝냄");
						e.printStackTrace();
					} 
				}
		}).start();
		
		
//		람다식으로 구현
//		메서드가 1개 이고 익명구현 객체이다.		
		new Thread(()-> {
				//영상과 약간의 차이를 두고 실행하게 하도록
						try {
							Thread.sleep(10);
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
						
						
						String[] jamak = new String[] {"하나","둘","셋","넷"};
						
						//자막 표시 작업
						for(int j=0; j<jamak.length; j++) {
					          System.out.println("영화 자막 : " + jamak[j]);
					    
					   //자막 찍히는 시간을 0.5초마다 실행하게         
					     try {
					  			Thread.sleep(500);
					  		} catch (InterruptedException e) {
					  			e.printStackTrace();
					  		}
						
					}
				
			}).start();	
		
}
}
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보