이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. suspend(), resume(), stop() - 스레드의 실행을 일시정지, 재개, 완전정지 시킨다. void suspend() 스레드를 일시정지 시킨다. void resume() suspend()에 의해 일시정지된 스레드를 실행대기상태로 만든다. void stop() 스레드를 즉시 종료시킨다. 스레드를 생성하고 start()를 하면 실행대기 상태가 된다. 자신의 차례가 오면 실행했다가 stop()을 호출하거나 자신의 일을 다 하면 소멸된다. 그런데 실행 중에 suspend()를 호출하면 일시정지 상태가 되었다가, resume()을 호출하면 다시 줄을 서서 실행대기 상태가 된다. 그런데 위 메서드들은 사용권장하지..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 데몬 스레드(daemon thread) - 일반 스레드(non-daemon thread)의 작업을 돕는 보조적인 역할을 수행 - 일반 스레드가 모두 종료되면 자동적으로 종료된다. - 가비지 컬렉터, 자동저장, 화면 자동갱신 등에 사용된다. - 무한루프와 조건문을 이용해서 실행 후 대기하다가 특정조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다. public void run() { while(true) { try { Thread.sleep(3 * 1000); //3초마다 쉼 } catch(InterruptedException e) {} //autoSave의 값이 true이면 autoSave()를 호출한다. if..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. ●⚝ ✎정리 ⍟실습 📂content 1. main 스레드 - main메서드의 코드를 수행하는 스레드 - 스레드는 '사용자 스레드'와 '데몬 스레드' 두 종류가 있다. => 사용자 스레드는 main 스레드이고, 데몬 스레드는 보조 스레드이다. 실행 중인 사용자 스레드가 하나도 없을 때 프로그램은 종료된다. 즉, 멀티 스레드에서는 메인 메서드가 종료되었어도, 실행중인 스레드가 남아있다면 프로그램은 종료되지 않는다. ⍟실습 더보기 Ex13_11 class Ex13_11 { static long startTime = 0; public static void main(String args[]) { ThreadEx11_1 th1 = new Threa..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 프로세스와 스레드 (process & thread) - 프로세스 실행 중인 프로그램, 자원(resources)과 스레드로 구성 - 스레드 프로세스 내에서 실제 작업을 수행 모든 프로세스는 최소한 하나의 스레드를 가지고 있다 프로세스 : 스레드 = 공장 : 일꾼 - 싱글 스레드 = 자원 + 스레드 - 멀티 스레드 = 자원 + 스레드 + 스레드 + .... 하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 스레드를 생성하는 것이 더 적은 비용이 든다. 2. 멀티스레드의 장단점 대부분의 프로그램이 멀티스레드로 작성되어 있다. 그러나, 멀티스레드 프로그래밍이 장점만 있는 것은 아니다. 장점 - 시스템 자원을 보다 효율..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. Object클래스 - 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다. - notify(), wait() 등은 스레드와 관련된 메소드 Object클래스의 메서드 설명 protected Object clone() 객체 자신의 복사본을 반환한다. public boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 알려준다. (같으면 true) protected void finalize() 객체가 소멸될 때 가비지 컬렉터에 의해 자동적으로 호출된다. 이 때 수행되어야하는 코드가 있을 때 오버라이딩한다. (거의 사용 안 함) public Class getClass() 객체 ..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. hashCode() - 객체의 해시코드(hash code)를 반환하는 메서드 - Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환 public class Object { ... public native int hashCode(); native는 native method라는 것이다. 이 말은 os가 가지고 있는 메서드라는 것. 주로 c언어로 작성되어 있다. 그래서 이것을 사용하면 실제로는 c언어로 작성되었지만 마치 java로 작성된 메소드처럼 사용할 수 있다. 해시코드는 객체의 지문이다. - equals()를 오버라이딩하면, hashCode()도 오버라이딩해야 한다. why? 이 둘은 객체..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 사용자 정의 예외 만들기 - 우리가 직접 예외 클래스를 정의할 수 있다. - 조상은 Exception과 RuntimeException중에서 선택 class MyException extends Exception { MyException(String msg) { // 문자열을 매개변수로 받는 생성자 super(msg); //조상인 Exception클래스의 생성자를 호출한다. } } class MyException extends Exception { //에러 코드 값을 저장하기 위한 필드를 추가 했다. private final int ERR_CODE; //생성자를 통해 초기화 한다. MyException(String ms..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 예외 발생시키기 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 Exception e = new Exception("고의로 발생시켰음"); 2. 키워드 throw를 이용해서 예외를 발생시킨다. throw e; ⍟실습 더보기 Ex8_6 class Ex8_6 { public static void main(String args[]) { try { Exception e = new Exception("고의로 발생시켰음."); throw e; // 예외를 발생시킴 // throw new Exception("고의로 발생시켰음."); } catch (Exception e){ System.out.print..
프로젝트를 정리하다가 갑자기 특정 repository에서 `button`이라는 코드가 들어간 파일을 찾고자 했다. 물론 프로젝트를 클론받아서 찾는 방법도 있지만, 클론받아서 고칠게 있는 것이 아니라 단순히 궁금해서 찾아본 거라서 클론까지 갈 필요가 없다고 생각했다. 그래서 구글링하다가 깃허브에서 검색하는 구문에 대해서 알게되었다. 해결해야할 상황 깃허브에서 repository에서 button이라는 단어가 들어간 파일을 다 찾고 싶음! 해결방법 1. 찾아야되는 repository에 들어가서 빨간상자에 있는 검색창을 이용한다. 2. 검색창에 아래와 같은 형식을 이용해서 검색한다. `repo:/ ` 예를 들어 내 아이디가 `Id`이고, 탐색할 repository는 `ABCDE`, 찾아야할 단어는 `button..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 프로그램 오류 - 컴파일 에러 (compile-time error) : 컴파일 할 때 발생하는 에러 - 런타임 에러 (runtime error) : 실행 할 때 발생하는 에러 => 실행이 되다가 실행 중 문제 발생 에러 (error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예) Out of Memory Error 예외 (exception) 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 에러는 어쩔 수 없지만, 예외는 처리하자! - 논리적 에러 (logical error) : 작성 의도와 다르게 동작 => 잘 동작은 하는데 개발자가 원하는대로 동작x 자바 컴파일러가 하는 일 1. 구문 체크 2...