java 39

[Java] 스레드, Runnable, join()

스레드란 무엇인가? 어떤 용도로 사용되는가?모든 작업은 담당자가 필요하며, 컴퓨터에서도 작업마다 해당 작업을 처리하는 담당자가 있다. 바로 이를 스레드라고 부른다. 즉, 스레드는 작업을 처리하는 일꾼이다. 하나의 작업은 반드시 한 개 이상의 스레드를 필요로 한다. 즉 복잡하고 방대한 작업은 두 개 이상의 스레드가 붙을 수 있으며, 이를 멀티스레딩이라고 한다. 멀티스레딩은 여러 작업을 동시에 처리할 수 있게 하는데, 멀티 코어 환경에서는 진정한 병렬 처리가 가능하고, 싱글 코어에서는 CPU가 빠르게 스레드를 전환하며 동시에 실행되는 것처럼 보이게 한다. 반대로 멀티스레딩이 없다면 작업은 순차적으로 처리된다. 작업을 한 명이 맡으면 순차적으로 처리해야 하는 것과 같다. 자바의 Thread 클래스는 스레드..

[Java] 특정 문자열을 입력해야만 무한루프를 종료하는 기능 구현 (Con'd)

요약scanner.nextLine()은 버퍼에 남아 있는 개행문자를 모두 읽어옴으로써 버퍼를 비워주는 역할을 수행하므로, 직접적으로 값을 받을 목적이 아니더라도 버퍼를 비우는 목적으로 활용할 수 있다.이전 포스팅과의 비교이전 포스팅은 인수를 정상적으로 입력한 경우에 한해 사용자 입력을 기다리지 않는 문제를 해결했다면, 이번 포스팅은 사용자가 잘못된 타입의 데이터를 입력했을 경우에도 동일 문제를 해결하는 과정이다. 의도한 수행 결과계산기 시작[1/2] 음이 아닌 정수를 입력하세요 : .인수를 잘못 입력했습니다.계속하겠습니까? (종료는 'exit' 입력) :실제 수행 결과계산기 시작[1/2] 음이 아닌 정수를 입력하세요 : /인수를 잘못 입력했습니다.계속하겠습니까? (종료는 'exit' 입력) : [1/2]..

[Java] 특정 문자열을 입력해야만 무한루프를 종료하는 기능 구현

의도한 연산 결과 : 사용자가 "exit"이라는 문자열을 입력할 때까지 대기[1/2] 0 또는 양의 정수를 입력하세요 : 3[2/2] 0 또는 양의 정수를 입력하세요 : 0연산 부호를 입력하세요 (+, -, *, / 중 택1) : /0으로 나눌 수 없습니다.다시 계산하시겠습니까? 'exit' 를 입력하여 종료 :실제 연산 결과 : 사용자의 입력을 기다리지 않고 다시 무한루프의 처음으로 회귀[1/2] 0 또는 양의 정수를 입력하세요 : 3[2/2] 0 또는 양의 정수를 입력하세요 : 0연산 부호를 입력하세요 (+, -, *, / 중 택1) : /0으로 나눌 수 없습니다.다시 계산하시겠습니까? 'exit' 를 입력하여 종료 : [1/2] 0 또는 양의 정수를 입력하세요 :소스 코드package step1;i..

[Java] extends와 implements의 차이

인터페이스는 본문을 가질 수 없다.extends와 implements의 차이 + abstractextends : 부모에서 선언과 정의를 모두 해야함. 자식은 메소드/변수를 그대로 사용할 수도 있고, 재정의(Override)할수도 있음. 다 사용하지 않아도 됨. 클래스 한 개만 상속받을 수 있음.implements : 클래스에서 인터페이스를 구현할 때 사용. 부모 객체는 선언만 하며, 정의(구현)은 실제로 구현하는 클래스에서 이루어져야 함. 반드시 선언된 모든 기능을 구현해야 함. 다중상속을 지원.abstract : 기본적으로 extends와 동일하게 상속하되 반드시 구현해야 하는 것은 abstract로 표현됨출처- 자바 extends, implements 차이 자바 extends, implements 차..

ETC/etc3 2025.12.04

[나의 개발일지] 4. Spring에 대해서 좀 더 자세히 알아봅시다

당신은 면접장에 와 있다. Spring을 이용하여 웹 기반 애플리케이션을 개발하셨다고 하는데, Spring이 어떤 역할을 하죠? 식은땀이 흐른다. 내가 개발한 애플리케이션에 대한 설명만 밤새도록 준비했는데, 정작 이걸 개발하는 데 활용한 Spring 프레임워크에 대한 정의는 사전캠프 때 잠깐 보고 말았던 것이다. '아! Spring에 대한 이해를 확실히 다졌더라면!' 아래와 같이 답변하면 된다. Spring은 Java 백엔드 개발의 필수 프레임워크워크입니다. 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스, 경량급 애플리케이션 프레임워크입니다.면접관의 표정이 밝아진다.'먹혔다. 조금 더 치고 들어가 보자.'"Spring은 오픈소스라는 점에서 무료이지만, 소스 코드 수정이나..

ETC/etc3 2025.11.20

[공부 상황 점검] 11/19 - 내일부턴 진짜 실전처럼!

시간대별 학습 기록 13:40 Spring Framework 공부 시작(못끝냄)14:11 데일리 스크럼 완료 후 자바 강의 수강 시작 (스킵하면서 수강 중)14:45 자바 1강 완15:21 자바 3강 완(2강은 아는 내용이라 넘김)15:55 자바 4강 완16:16 자바 4강 복습 완료 및 5강 수강 시작17:54 자바 6강 완료(모르는 내용만 보고 넘김)21:17 자바 8강 완료(모르는 내용만 실습) 회고 [학습 효과 평가]하루에 집중해야 5강 정도 들을 수 있는 것 같다.같은 조원인 규범님은 오늘 주어진 과제에 집중한다고 했다. 당장 계산기를 만들고 제출까지 완료했다.나는 자바에 대한 공부가 더 필요하다고 생각해 강의를 수강하고 내용을 블로그에 정리하는 데에 집중했다.하지만 목표가 없이 공부하다 보니 ..

ETC/etc2 2025.11.19

[나의 개발일지] 3. Java와 클래스

이번 포스팅에서는 Java에 대해서 대략적으로 알아보도록 하자 1. Java란 어떤 언어인가?Chatgpt에 따르면, Java는 다음과 같은 패러다임, 철학, 용도를 위해 만들어진 언어이다. 일단 요약을 먼저 보자.구분내용패러다임객체지향 중심, 명령형, 부분적 함수형철학WORA, 안정성 및 보안, 단순성, 확장성주요 용도백엔드, 기업 시스템, Android, 빅데이터, 분산 시스템, 웹/데스크톱 보다 자세한 내용은 아래 내용을 펼쳐 보자.더보기1. 자바의 패러다임객체지향 프로그래밍(OOP) 중심 --> 대규모 소프트웨어 개발에 적합클래스, 객체 기반 구조상속, 캡슐화, 다형성 등 OOP 기본 원칙 충실현실 세계 모델링에 강함명령형/절차적 프로그래밍 요소 포함메서드 기반 절차적 코드 작성 가능함수형 프로그..

ETC/etc3 2025.11.18

[나의 개발일지] 2. Java와 Spring을 배워봅시다

Java란 무엇일까?커피 프랜차이즈? 아쉽게도 그건 아니다. Java는 ( 1 )의 한 종류이다.사람의 언어(한국어, 영어)를 컴퓨터가 이해할 수 있는 형태로 바꿔주는 역할을 한다.어떤 환경에서도 실행 가능하다.Windows, Mac, Linux 등 ( 2 ) 실행된다. 안정적이고 보안이 강하다. 전 세계에서 금융, 웹서비스, 앱 개발 등 안정성이 중요한 곳에 많이 쓰인다.→ 여러분이 사용하는 ‘은행 앱’, ‘카카오톡 서버’, ‘웹사이트 로그인 기능’ 중 상당수가 Java로 만들어져 있다. Spring이란 무엇일까?또 드립치는거냐고? 이번엔 아니다.신발에 스프링을 달면 어떻게 되는가? 그렇다. 더 높이 뛸 수 있다.여기서 신발은 자바와 같다. 자바가 스프링을 만나면..

ETC/etc3 2025.11.15

[나의 개발일지] 1. Spring 부트캠프를 시작하며

1.내가 Spring 트랙에 참여한 계기는 무엇인가요?: 비전공자로서 데이터 엔지니어로 직무 전환을 하고 싶었는데, 현직자의 유튜브 영상들을 보고 백엔드 개발자로 업계에 진출하는 것이 가장 현실적이고도 효과적이라는 판단이 섰다. 마침 내일배움캠프 데이터분석 트랙에 합격한 상황이었고, 백엔드 트랙인 Spring도 신청 가능해서 기존 트랙 취소 후 Spring 캠프에 합류하게 됐다. 2.내가 이해한 개발자(혹은 생각했던 직무)는 어떤 역할을 하는 사람인가요? : 내가 현재 알고 있는 지식으로는, 백엔드 개발자는 데이터가 처리될 서버를 구축하고 데이터의 처리, 저장, 인출 방식을 관리하는 직무이다. 3.프로그래밍을 경험해보셨나요? 해보셨다면 어떤 경험을 하셨는지를 작성해주시고, 아니라면 프로그래밍/백엔드 ..

ETC/etc3 2025.11.13