묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 고급 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보다 결과가 좋아야 할 것 같은데 반대의 결과가 나와서 궁금해서 질문드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
오타 제보 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]생산자 소비자 문제 2에서 BoundedQueueV5 부분Condition 분리에서consumerCond, producerCond가 바뀐거 같아서 제보드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
notify()가 blcoked로 깨우는 이유??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]notify()로 깨울 때 자바가 waitting을 runnable로 안 깨우고 blocked로 깨우는 이유가 궁금합니다. 또 blocked로 깨운 뒤에 어떻게 되는지도 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
스케줄링에 대한 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]프로세스 스케줄링과 스레드 스케줄링의 차이에 대해 궁금합니다. 두가지는 동일한 개념인가요? 1개의 CPU 코어는 한번에 하나의 스레드만 실행할 수 있나요?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
스레드 질문 있습니다
안녕하십니까 영한님 영한님 덕분에 비전공자로서 백엔드 개발자의 꿈을 꾸고있는 사람중 1인입니다다름이 아니라 영한님께서 여러 스레드를 실행하면 main 스레드의 경우 다른 스레드의 종료까지 기다리지 않아 join이라는 메서드로 적절하게 대처하는 것이 중요하다고 들었습니다. 하지만 아래 코드를 보면 main 스레드가 종료라는 문구가 항상 맨 마지막에 나와 헷갈려서 여쭈어봅니다. 이경우도 main이 먼저 종료되어 thread가 실행되지 않을 수 있는 건가요? public static void main(String[] args) { MyTask task = new MyTask(); Thread thread = new Thread(task,"work"); log("runFlag = " + task.runFlag); thread.start();; sleep(1000); log("runFlag를 false로 변경 시도"); task.runFlag = false; log("runFlag = " + task.runFlag); log("main 종료"); } static class MyTask implements Runnable { volatile boolean runFlag=true; @Override public void run() { log("task 시작"); while (runFlag) { } log("task 종료"); } } }
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
조금 더 깊은 내용, 실무적인 내용, 미래의 계획에 대해서 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한님 강의 잘 듣고 있습니다!!지금 강의도 정말정말 좋고 많은 것을 다루지만, 이런 것들을 다룰 예정은 없는지 여쭤보고 싶습니다!Lock next level(자바)ReadWriteLock, StampedLock, Mutex, Semaphore비동기/멀티스레드 next level(feat. 스프링)CountDownLatch 사용법, Transaction 동시성 테스트, 멀티스레드를 활용한 성능/부하 테스트 방법 항상 잘 배우고 있습니다 감사합니다 ☺
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
count 값 1107116232 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]강의에서 volatile을 적용하지 않은 예제에서MyTask flag값을 false로 바꾸고 count값을 출력했는데 이때MyTask Thread의 캐시메모리에있는 값을 메인메모리로 업데이트하고, Main Thread는 메인메모리에있는 count값을 캐시메모리에 동기화해서 갖고온걸까요? 출력할 때 컨텍스트 스위칭이 일어났다고 가정하면, 1_100_000_000이 출력될거라 생각했는데 궁금해서 질문드립니다!