java
-
[Java] 익명 클래스java/Class.Interface.Method 2021. 8. 28. 14:54
-익명 클래스란 class A 를 상속받아 어떠한 기능을 하는 class B를 만들어야 한다고 가정하자. class B extends A로 클래스 B를 선언한 뒤에 new B를 통해 객체를 생성한다. 만약 프로그램에서 클래스 B는 현재 한번만 사용되고 차후에 사용될 필요가 없다면?? 클래스로 선언해 놓을 필요가 없을 것이다. 익명 클래스는 기존의 방식처럼 클래스를 선언하지 않고 코드상에서 한번쓰는 방식으로 선언할 수 있다. 또한 이름을 가지지 않는다. 익명 클래스는 인터페이스 하나만 구현하거나, 클래스 하나만 상속받을 수 있다. 여러 인터페이스 동시에 구현 불가 인터페이스 구현, 클래스 상속이 동시에 불가 하나를 상속받거나, 구현해야하기 때문에 아무것도 상속받지 않거나, 아무것도 구현하지 않은 마음대로 ..
-
Thread(5) synchronized를 이용한 스레드 동기화java/Thread 2021. 6. 8. 22:04
스레드의 작업 내용이 짧으면 우리가 원하는 결과가 나타나지 않을 가능성이 생기게 된다. 일단 이 문제가 다른 결과를 보이는 것은 뒤에 가서 설명하고 먼저 스레드의 동기화 필요성에 대해서 설명한다. 스레드의 동기화 한 스레드가 진행중인 작업을 다른 스레드가 간섭하지 못하게 하는것 동기화의 필요성 스레드간에는 공유하는 자원이 있기 때문에 이 공유자원들에 대하여 여러 스레드에서 동시에 작업하면 문제가 발생할 수 있다. 그렇게 떄문에 스레드의 동기화가 필요하다. 두 스레드에서 하나의 Counter객체를 공유해서 사용해서 발생하는 문제를 봐보자. 하나의 Counter 클래스는 count값과 count값을 1증가시키는 increase메서드가 있다. Counter sharedCounter= new Counter();..
-
[Java] 메모리 stack,heapjava 2021. 5. 31. 18:42
스레드를 공부하면서 공유 객체에 대해 공부할 필요가 생겼다. 인터넷의 자료들을 바탕으로 매우 간단하게 정리하였다. 읽기전에 알아야할 내용들 멤버변수, static변수(클래스 변수), 지역변수 클래스 로딩이 언제 수행되는가. 클래스 로딩시 static변수 초기화 작업 및 static초기화 블럭 수행 참조 값을 저장하는 참조형 변수 , 실제 값을 저장하는 primitive변수 메소드 영역( 클래스 로딩시 static변수가 저장되는 곳) 힙 영역( 모든 객체가 저장되는 곳. 객체내부의 인스턴스 변수또한 힙에 저장됨, 동적 메모리, 주로 긴 시간 존재해야 할 데이터가 저장됨, GC의 대상, 메모리의 낮은 곳에서 높은 곳 방향으로 메모리 할당이 이루어짐) 스택 영역( 메서드 연산시 잠깐 잠깐 올라갈 변수를 올리는..
-
[Thread] Daemon Threadjava/Thread 2021. 5. 27. 22:03
데몬 스레드는 일반 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드 일반 스레드가 모두 종료되면 데몬 스레드는 자동 종료된다. 일반 스레드의 보조역할을 수행하므로 일반 스레드가 없으면 존재의미가 없기 때문이다. 데몬 스레드- 가비지 컬렉터, 워드프로세서의 자동저장, 화면자동갱신 등이 있다. 데몬 스레드는 일반 스레드의 작성방법과 실행방법이 같으며 스레드를 생성한 후 실행전에 setDaemon(true)를 호출하기만 하면 된다. 데몬 스레드가 생성한 스레드는 자동적으로 데몬 스레드가 된다. 스레드가 데몬 스레드인지 일반 스레드인지 확인하는 메서드 스레드참조변수.isDaemon() -> boolean리턴 데몬 스레드는 무한루프와 조건문을 이용하여 실행 후 대기하고 있다가 특정 조건이 만족되면 작업을 수..
-
[Thread] Thread, ThreadGroupjava/Thread 2021. 5. 27. 20:38
10페이지 분량의 글을 나름 열심히 정리했지만 헷갈리는 것이 있고 독자로 하여금 포스팅 이해가 지맘대로 일 것 같아서 싹다 새로 정리하여 글을 남긴다. 아오!!!!쭈바 스레드 그룹은 서로 관련된 스레드를 그룹으로 다루기 위한 것이다. 스레드 그룹에는 스레드 뿐만 아니라 스레드 그룹도 포함시킬 수 있다. 보안상의 이유로 도입된 개념으로, 자신이 속한 스레드 그룹이나 하위 스레드 그룹은 변경할 수 있지만 다른 스레드 그룹의 스레드를 변경할 수는 없다. public class ThreadGroup implements Thread.UncaughtExceptionHandler { private final ThreadGroup parent; String name; //스레드 그룹의 이름 int maxPriority..