묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Future
안녕하세요 영한님 강의 JPA때부터 잘 보고 있습니다.future에 대해서 질문이 있는데.. future.get()을 호출 했을때 값이 있으면 그 값이 바로 나오지만 아직 결과값이 나오지 않는 상태이면 호출 스레드는 wating상태가 맞지 않나요??제가 알기로는 wating 상태에서는 인터럽트나 이런걸로 깨울 수 있고 블로킹 같은 경우에는 깨우지 못한다는 차이가 있어서(더 많은 차이도 있을거라 생각합니다) 두가지가 같다고 보기 힘든것 같은데... wating과 블로킹이 같은건가요...???감사합니다!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ExexutorService invokeAny() 메서드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 invokeAny 메서드 실행시 어떨 때는 인터럽트 예외가 발생하고 어떨 때는 발생하지 않고 모든 task가 완료 되고 있습니다. 스레드가 한번에 모두 실행이 완료돼서 그런걸까요 아니면 제가 코드를 잘못 작성했을까요? 읽어주셔서 감사합니다. 여기에 질문 내용을 남겨주세요.
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
영한님 질문이 있습니다(자바 관련 질문 아님 - 다음 행보에 대해서)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 어제인가 그저께인가, 이 생각이 계속 떠나지 않아서 글을 쓰게 되었습니다. 말 그대로 영한 님의 개발 커리에 대해, 다음 행보가 궁금해져서 질문을 드립니다. 1. 자바 강의 및 DB강의를 끝나고 다음 강의로는 무엇을 하실 건가요? 아니면 다시 실무로 가실 건인지?2. 자바 강의를 끝나고 DB를 하신다는 기억이 있는데, DB 강의 때에, 어떤 종류의 sql을 이용할 생각 인가요? 답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
MyAtomic 성능 테스트 결과 상이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MyAtomicInteger 와 다른 구현체 들의 성능을 테스트 하는 코드에서 강의에 결과와 다른 결과가 나옵니다...package thread.cas.increment; import java.util.concurrent.atomic.AtomicInteger; public class MyAtomicInteger implements IncrementInteger{ AtomicInteger atomicInteger = new AtomicInteger(0); // 이미 동시성 문제가 다 해결되어 있는 클래스이다. @Override public synchronized void increment() { atomicInteger.incrementAndGet(); } @Override public int get() { return atomicInteger.get(); } }package thread.cas.increment; import static util.MyLog.log; public class IncrementPerformanceMain { public static final long COUNT = 100_000_000; public static void main(String[] args) { test(new BasicInteger()); //가장 빠르다 CPU 캐시를 가장 적극 사용한다. 멀티스레드 환경에서는 사용할 수 없다. 단일 스레드일 경우 가장 효율적 test(new VolatileInteger()); // 메인메모리를 직접 사용한다. 안전한 임계영역은 없기 때문에 멀티스레드 환경에는 사용할수 없다. test(new SyncInteger()); test(new MyAtomicInteger()); } private static void test(IncrementInteger incrementInteger) { long startMs = System.currentTimeMillis(); for (long i = 0; i < COUNT; i++) { incrementInteger.increment(); } long endMs = System.currentTimeMillis(); log(incrementInteger.getClass().getSimpleName() + ": ms=" + (endMs - startMs)); } }아토믹이 그냥 synchronized보다 더 느린 결과가나오는데 제가 놓친 부분이 있을까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
스레드를 조작하는 실제 상황 예시가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 제가 큰 규모의 작업은 다루지 못했다보니 이런 개념들이 사용되는 실제 상황의 예시가 있을까요? 보통 스프링에서 제공하는 component를 사용해서 stateless하게만 만들어두다 보니 실제로 적용해보려 한다면 어디에 해야하지? 하는 생각이 그려지지 않습니다. 혹시 몇가지 실제 예시를 들어주실 수 있나요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
unpark() 메서드 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. LockSupprot의 unpark()메서드는 park()와 parkNanos()로 WAITING상태이거나 TIME_WAITING상태에 빠진 스레드를 RUNNABLE상태로 깨우는 데 사용되는거면sleep(ms)로 TIME_WAITING상태에 빠진 스레드를 unpark()로 깨울 수 없는건가요?내용을 좀 더 찾아보니, LockSupport에서 스레드의 상태를 확인하기 위해 자체적으로 permit이라는 플래그값을 사용한다고 하는데, 그럼 결국 unpark는 LockSupport내의 메서드를 사용해서 대기 상태로 만든 스레드에 대해서만 작용하는 것인지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
오타 제보합니다!
안녕하세요 영한님! 오타 제보합니다!강의자료 pdf13. 스레드 풀과 Executor 프레임워크2.pdf39페이지AS-IS거절된 작업을 버리지만, 대신에 경로 로그를 남겨서 개발자가 문제를 인지할 수 있도록 해보자.TO-BE거절된 작업을 버리지만, 대신에 경고 로그를 남겨서 개발자가 문제를 인지할 수 있도록 해보자.감사합니다!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
오타 제보합니다!
안녕하세요 영한님! 오타 제보합니다!강의자료 pdf13. 스레드 풀과 Executor 프레임워크2.pdf23페이지AS-IS자바는 Executors 클래스를 통해 3가지 기본 전력을 제공한다.newSingleThreadPool(): 단일 스레드 풀 전략newFixedThreadPool(nThreads): 고정 스레드 풀 전략newCachedThreadPool(): 캐시 스레드 풀 전략TO-BE자바는 Executors 클래스를 통해 3가지 기본 전략을 제공한다.newSingleThreadPool(): 단일 스레드 풀 전략newFixedThreadPool(nThreads): 고정 스레드 풀 전략newCachedThreadPool(): 캐시 스레드 풀 전략새해 복 많이받으세요!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
멀티스레드, 스프링mvc 관련하여 질문이 있습니다.
@Servicepublic class PersonService { public void processPerson(Person person) { System.out.println("Processing person: " + person); }}@Componentpublic class Common{ public void logging(Log log){ System.out.println("Processing person: " + person); }}위 두 클래스는 스프링 빈으로 등록되고 싱글톤입니다.싱글톤은 객체가 1개만 생성되는걸로 알고있습니다.그럼 controller 단이나 외부에서 PersonService, Common 의 processPerson, logging 메서드들을 동시에 호출하면2개의 스레드가 각 싱글톤 객체의 메서드 매개변수를 동시에 변경하니깐 스레드 세이프하지않은거 아닌가요? 스프링 mvc 구현할때 다 이렇게 하던데 이게 스레드 세이프한지 궁금합니다~!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
메서드의 메모리 위치에 대한 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]클래스의 메서드 코드들은 메모리 중 메서드 영역에 할당되고 인스턴스들이 이를 공통으로 사용된다고 앞서 배웠던 것 같습니다.하지만 해당 강의 2:06 경에는 힙 영역에 존재하는 HelloRunnable 인스턴스의 run 메서드를 실행한다고 작성해주셨는데, 이는 메서드 영역이 생략된 그림일까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
카운트 값 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]해당 강의에서 나오는 카운트 값이랑 제가 직접 해본 카운트 값이랑 다르게 나오는데 이게 CPU 성능이 다 달라서 그런건가요?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ReentrantLock - 활용 에서 BankAccountV4클래스 getBalance() 코드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. getBalance() 에서 try-finaly 코드의 순서가 이해가 안되서 질문을 드립니다. 저의 기억 으로는 try안에 있는 코드가 실행되고 finaly 안에 있는 코드가 실행 되는 걸로 알고 있습니다.근데 try 안에서 return balance; 을 해버리는 것을 보고 "이게 뭐지?"라는 표현이 저절로 나오더라고요.분명히 리턴으로 getbalance()를 빠져 나갔는데, lock.unlock(); 이게 실행가는한가? 라는 생각이 듭니다.저의 머리로는 이해가 안되는데 의문점을 해결해 주 실수 있으신가요? 아니면 저가 try-finaly를 잘못 이해한건가요?답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
동시성 문제와 volitale의 연관성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요!현재 CAS연산 강의를 보고있습니다. 그러다가 문득 "volatile 키워드가 메모리 가시성 문제를 해결해 주지만 동시성 문제는 완벽하게(?) 해결해주지 못한다." 라는 이유에 대해서 곰곰히 생각해 보았는데 혹시 CPU 가 싱글코어와 멀티코어냐에 따라서 결과가 달라지는건지 궁금합니다. 이 이유가 아니라면, 왜 volatile키워드가 동시성 문제를 해결해주지 못하는지 알려주시면 감사하겠습니다!
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
인터럽트-시작2, 인터럽트 상태 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 영한님 코드에서 인터럽트 상태가 true이었다가 false로 바뀌는것을 확인하였습니다.근데, 여기서 문제가 발생합니다.저가 똑같이 코드를 만들어 밨고 그랬지만화면 처럼인터럽트 상태 2개 전부다 false가 나오는 경우가 발생합니다.(7번-8번 돌리면 한번 꼴로 나오는 것 같더라고요.)그래서 저의 코드가 문제가 있는가 보여서 pdf에 있는 코드를 붙여놓기, 하여도 동일한 결과가 가끔씩 나옵니다.(빨리 돌리기 위해서 sleep 시간은 조정함.)저의 컴퓨터가 문제가 있는 건가? 이런 생각도 하게 되는데,모르겠네요. 그래서 여쭈어 봅니다.혹 저만 이런 결과가 나오는 건지?, 아니면 다른 분들 컴퓨터에서도 이런 결과가 나오는 건지 알고 싶네요.추가1여러번 코드 치고 돌린거 아닙니다. 맨처음 코드 실행했는데, 둘다false가 나와서, 당황해서 여러번 돌리게 되었습니다.답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
cas 연산3 incrementAndGet 질문
안녕하세요? 강의 잘 듣고 있습니다. CAS 연산3에서 질문이 있는데요, 아래는 incrementAndGet을 학습용으로 만들어주신 메서드입니다.private static int incrementAndGet(AtomicInteger atomicInteger) { int getValue; boolean result; // 읽고 -> 읽은 값이 바뀌지 않았는지 확인하고 -> 업데이트 // [읽은 값이 바뀌지 않았는지 확인하고 -> 업데이트] 이 부분을 CAS 연산으로 보장 do{ getValue = atomicInteger.get(); log("getValue : " + getValue); sleep(100); // 스레드 동시 실행을 위해 잠시 대기 // 읽은 값이 그대로 있다면(벽경되지 않았다면) 내가 의도한 값을 넣어라! result = atomicInteger.compareAndSet(getValue, getValue+1); log("result: " + result); } while(!result); //compareAndSet이 실패했으면 계속 다시 해라 return getValue + 1; // atomicInteger.get() 하지 않는 이유 <- 그새 다른 스레드가 값을 변경할 수 있기 때문 } 이 코드에서 보면값을 어플리케이션으로 가져와서 -> CAS연산을 시키고 충돌이 발생할 경우 재실행을 시키는데 애초부터 CPU한테 +1을 하는 것을 시키면 굳이 낙관적락을 적용할 필요가 없지 않나요? 굳이 어플리케이션으로 가져와서 검증을 하는 이유를 아무리 생각해봐도 잘 모르겠습니다. ㅠㅠ
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
문제와 풀이 join() 활용2 - 코드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 남깁니다.'문제 풀이2번 을 어떻게 하면 될까?' 라고 생각 하던 도중,조인 하나만 맨 밑에 넣어보자, 라고 해보니.. 답은 나오긴 하였습니다.(코드 내용)t1.start();t2.start();t3.start();t3.join();(코드 완료)근데 여기서 궁금증이 생겼습니다.여러 개의 작업을 시키고 나서, 끝이 나고, 기다려야 하는 경우에, 정답 풀이에서는 t1.join(); , t2.join(); , t3.join() 이렇게 전부다 join()을 해주었는데, 저 처럼 't3.join()' 하나만 써도 상관 없나요?답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
interrupt() 메서드 사용 부분
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.아래 부분처럼 interrupt() 사용해서 수정했는데잘 작동하는데 이건 잘못된 코드 일까요..?while문도 try() catch() 문 안에 넣으면 안될까요 ..?@Override public void run() { try { while (true) { if (jobQueue.isEmpty()) { continue; } String job = jobQueue.poll(); log("출력 시작: " + job + ", 대기 문서: " + jobQueue); Thread.sleep(3000); log("출력 완료: " + job); } } catch (InterruptedException e) { log("interrupt!"); log("프린터 종료"); } }
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
HelloThreadMian 코드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. HelloThreaMain 클래스 에서 의문점이 생겨서 질문을 드립니다.코드를 보면이런 식으로 되어 있는데,저가 생각 하기로는이렇게 코드를 하는 게, 맞지 않나 싶어서, 여쭈어봅니다.helloThread.start()를 호출전이니 main.start가 아니라,helloThread.start가 되어야 맞는거 아닌가? 라는 생각을 하게 되는데요. 오류인가요? 아니면 저의 생각이 틀린건가요?답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
정적내부클래스 new 로 생성에 관한 질문(인터럽트-시작1강 중...)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인터럽트 시작1 부분 강사님 설명 예제중에서 갑자기 궁금해서 질문드립니다..제가 궁금한부분은 public class ThreadStopMainV1 { public static void main(String[] args){ MyTask task = new MyTask(); Thread thread = new Thread(task, "work"); thread.start(); } static class MyTask implements Runnable { ...................................... }}여기서 질문 왜 정적내부클래스 MyTask()에 new를 써서 만드나요?? 정적 내부 클래스는 외부 클래스의 정적 멤버처럼 동작하기 때문에, 외부 클래스의 이름을 통해 접근해야 하는거 아닌가요?. 따라서 newThreadStopMainV1.MyTask() 형태로 생성해야하는거 아닌가요?? 정적내부클래스도 바로 다이렉트로 new MyTask() 로 생성해도 되는건가요 ?? 너무궁금합니다..
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
안녕하세요 cas 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 안녕하세요 강의 잘 듣고 있습니다.cas 강의에서volatile int와 atomicInteger의 performance 차이를 보니까 atomicInteger가 더 빠른 것을 알 수 있었습니다. 그런데 이건 조금 이해가 잘 안되는게,atomicInteger 자체가 volatile을 내장하고 있는 거라 생각했는데 왜 volatile보다 속도가 빠른 지 이해가 잘 가지 않습니다.volatile은 어떤 락도 안 걸고(그래서 결과가 다르게 나오지만) 가시성만 고려하기 때문에 atomicInteger보다 결과가 좋아야 할 것 같은데 반대의 결과가 나와서 궁금해서 질문드립니다.