Java 39

[Thread] Thread - Part2

1. 싱글스레드와 멀티스레드 앞서 Thread - part1 에선 멀티스레드의 장점에 대해서 공부해보았는데 , 멀티스레드가 싱글스레드보다 무조건 성능이 좋을까? 결론부터 말하자면 아니다. 상황마다 다르다. 예를들어서 싱글스레드로 2개의 프로그램을 돌리면 순차적으로 프로그램이 실행되면서 하나의 프로그램이 종료되면서 다음 프로그램이 실행되는 모습을 보일것이다. 멀티스레드로 2개의 프로그램을 돌릴땐 이야기가 살짝 다르다 OS 스케줄러에 의해서 두 프로그램은 번갈아 가면서 실행되고 이때 작업 전환을 할 때 걸리는 시간이 발생하는데 이를 context switching(작업 전환)이라고 부른다. 따라서 만약 싱글코어(한번에 실행할 수 있는 프로그램이 1개인 상황)에서 단순한 작업을 진행한다면 싱글스레드가 더 효율..

Java 2021.09.17

[Thread] Thread 정리 Part 1

1. 프로세스(process)와 스레드(thread) 1. 프로세스 (process) 실행 중인 프로그램으로써 자원과 스레드로 구성 2. 스레드 (Thread) 프로세스 내에서 실제 작업을 수행 , 프로세스는 최소한 하나의 스레드를 가진다. 결국 모든 프로세스는 최소한 하나 이상의 스레드를 가지고 있으며 , 실제로 프로세스의 자원을 가지고 작업을 수행하는 것은 스레드이다. 멀티태스킹과 멀티스레딩 여러 개의 프로세스의 실행 → 멀티태스킹 하나의 프로세스 안에서 여러 개의 스레드의 실행 → 멀티스레딩 하지만 하나의 CPU코어가 한 번에 수행할 수 있는 작업은 하나뿐이고 코어가 아주 짧은 시간 동안 여러 작업을 번갈아 가며 수행함으로써 여러 작업들이 동시에 수행되어 보이는 것뿐, 따라서 프로세스가 얼마나 많은..

Java/Java Study 2021.08.17

[자바의 정석] Exercise (7_10&11)

해당 연습문제는 자바의 정석3판 연습문제를 참조했습니다. getter & setter 생성문제다. 아주 간단한 문제지만 , 사용자 입장에서 생각해봤을때 어떤게 추가되어야 할지 생각해봐야한다. class MyTv2{ private boolean isPowerOn; private int channel; private int volume; final int MAX_VOLUME = 100; final int MIN_VOLUME = 0; final int MAX_CHANNEL = 100; final int MIN_CHANNEL = 1; public boolean isPowerOn() { return isPowerOn; } public void setPowerOn(boolean powerOn) { isPowerOn..

Java/Daily-Java 2021.07.08

[ 객체지향 ] static

Static , ( Feat. instance ) 인스턴스(instance)필드와 정적(static)필드에 대해서 자바를 공부한 사람이라면 한번은 들어보았을 것이다. 오늘 나는 인스턴스 필드와 정적필드에 관하여 가볍게 알아보려고 한다. 인스턴스(객체)는 힙(heap) 영역에 생성이 된다. 그리고 새로운 객체를 만들면 새로운 힙 영역에 그 객체가 할당, 그 힙영역에 인스턴스멤버들 또한 할당이 된다. class Product { private String productName; private int price; public Product(String productName, int price) { this.productName = productName; this.price = price; } public St..

Java/Java Study 2021.07.08

[자바의 정석] Exercise (7_1) +

해당 연습문제는 자바의 정석3판 연습문제를 참조했습니다. 1) shuffle Math.random() 을 이용, 배열의 자리를 바꿔줌으로써 배열을 섞어주는 메서드 void shuffle(){ for(int i=0; i 바로 유효성검사 코드를 중복하지 않을 수 있다는것 SutdaCard pick(){ int random = (int)(Math.random() * cards.length); return pick(random); } Answer class SutdaDeck { final int CARD_NUM = 20; SutdaCard[] cards = new SutdaCard[CARD_NUM]; // 하나의 카드덱 SutdaDeck(){ for (int i = 0; i < cards.length; i++)..

Java/Daily-Java 2021.07.07

[자바의 정석] Exercise (7_1)

해당 연습문제는 자바의 정석3판 연습문제를 참조했습니다. SutdaDeck() 안에서 배열 SutdaCard 를 구현해보자 class SutdaDeck { final int CARD_NUM = 20; SutdaCard[] cards = new SutdaCard[CARD_NUM]; SutdaDeck(){ //SutdaCard 배열을 초기화하는 메서드 //구현하기 } } } class SutdaCard{ int num; boolean isKwang; SutdaCard() { this(1, true); } SutdaCard(int num, boolean isKwang) { this.num = num; this.isKwang = isKwang; } @Override public String toString() ..

Java/Daily-Java 2021.07.06

[Collections Framework] Arrays.sort( ); - (Comparable & Comparator)

● Arrays.sort( ); Array.sort( ) 메서드는 어떻게 알아서 정렬을 하는가? 우리가 무언가를 정렬한다는것은 무작위로 일렬로 세우는것도 정렬이지만, 데이터를 정렬하는것은 정렬 기준이 필요하다. 정렬 (整列) 명사 1 가지런하게 줄지어 늘어섬. 또는 그렇게 늘어서게 함.정렬로 세우다. 명사 2 데이터를 특정한 조건에 따라 일정한 순서가 되도록 다시 배열하는 일. 그 특정한 정렬의 조건이 바로 Comparable과 Comparator 이고 둘 다 정렬기준을 주는 인터페이스이지만, 차이점이 존재한다. 차이점에 앞서서 sort( ) 메서드에 대해서 다시 짚고넘어가자. 우리는 sort( int[] a ) 를 쓸때 정수타입의 배열을 넣으면 sort 메서드가 알아서 정렬해주는걸로 생각했겠지만 사실은..

Java/Java Study 2021.06.03

[Collections Framework] Arrays

● Arrays Arrays는 배열을 다루는 유용한 메서드의 집합이며, 배열을 매개변수로 받아서 우리가 원하는 작업들을 실행시켜준다. Arrays 클래스로 우리가 배열을 다룰 수 있는 작업들이 무엇인지 알아보자. ( asList(); 메서드는 따로 포스팅을 할 예정!) Overloading Arrays의 메서드들은 타입별로 전부 Overloading이 되어있어서, 기본형 뿐만 아니라 참조 형배 열까지 정의되어있다. static String toString(int[] a) static String toString(boolean[] a) static String toString(byte[] a) static String toString(char[] a) static String toString(short[]..

Java/Java Study 2021.06.03

[객체지향] Static 메서드는 언제 쓸까?

● 인스턴스 메서드 인스턴스 생성 후, '참조 변수. 메서드명()'으로 호출 인스턴스 멤버(인스턴스 변수, 인스턴스 메서드)와 관련된 작업을 하는 메서드 메서드 내에서 인스턴스 변수 사용 가능 ● static 메서드 (클래스 메서드) 객체 생성 없이 '클래스 이름. 메서드 이름()'으로 호출 인스턴스 멤버와 관련 없는 작업을 하는 메서드 메서드 내에서 인스턴스 변수 사용불가 인스턴스 메서드는 객체를 생성하여 참조 변수를 이용하여 접근해야 한다. 반면에 클래스 메서드는 별도의 객체 생성 없이 호출이 가능한 메서드이다 자바를 좀 공부한 사람들은 아마도 위의 내용을 다 잘 알고 있을 수도 있다. 그렇다면 혹시 Static을 언제 붙여야 하는지 당신은 아는가? 먼저 인스턴스 메서드는 왜 객체를 선언해야 하는지 ..

Java/Java Study 2021.06.02

[Collections Framework] LinkedList (vs Array)

● LinkedList ArrayList와 마찬가지로 List를 상속받는 컬렉션 클래스이다. List를 상속받으므로 데이터의 저장 순서를 유지하고, 데이터의 중복을 허용한다. LinkedList는 기존의 배열의 단점을 보완한 새로운 자료구조이다. 우선, 기존의 배열(Array)의 단점이 무엇이었나? 크기를 변경할 수 없다. 중간에 존재하는 요소의 삭제 또는 요소의 추가가 어렵다(시간이 많이 걸린다.) 사실 1과2는 서로 깊은연관이있다. 배열의 크기를 변경할 수 없기때문에 중간에 요소를 추가하거나 삭제하려면 새로운 배열을 생성하여 복사해야하기 때문이다. 그렇다면 LinkedList는 이러한 배열(Array)의 단점을 어떻게 보완하였고 차이점은 무엇이며, 왜 사용하는지에 대해서 알아보자. ● Array와 L..

Java/Java Study 2021.05.31