Callble 활용 질문 이요.(코드 이런식으로 만들어도 되는지?)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
안녕하세요. 어찌저찌 하다가 콜라볼를 이용해서 만들기는 하였는데 이렇게 코드로 만들어도 되는지 궁금해서 질문을 드립니다.
콜라볼에 Lsit값을 넣어서 , 심플한 callable 리스트를 만들었는데 이렇게 활용해도 되는지 알고 싶어서 코드를 올립니다.


이렇게 만들어도 되냐요? 답변 부탁드립니다.
답변 3
1
저의 생각을 말씀드리면 해당 코드는 미리 데이터를 넣어두고 단순히 call메서드에서 해당 처리하는 스레드가 잠깐 timed wait상태가 되었다가 리스트를 반환하는 로직입니다. 그런데 이 부분은 단일 스레드로 돌려도 무방하지 않을까라는 생각입니다. 단순 반환만 하는 로직이면 말이죠.
0
저라면 해당 로직에서는 멀티 스레드가 아닌 단일 스레드로 처리할 것 같습니다. 다만, 굳이 멀티스레드를 이용한다하면 add하는 로직을 넣을 것 같습니다. 물론 올려주신 코드처럼 출력 자체를 해도 되고 이것은 비즈니스 요구사항이 어떤가에 따라 달라지지 않을까요?
1
이런 코드 처리 할것 이라면, 그냥 메인에서 리스트<string> 이렇게 하고 출력 한다는 이야기였네요..(잘못 알아들었네요..)
여러개를 동시 작업 하는게 아니니까요.
0
안녕하세요. 생각하는자님, 공식 서포터즈 David입니다.
인프런 AI 인턴 답변에 추가하여 답변드립니다.
해당 코드를 어떤 맥락에서 사용하기 위해 작성하게 되었는지에 대한 내용이 질문에 포함된다면 더욱 좋을 것 같습니다:)
감사합니다.
0
으음.. 이야기하자면 오늘 오전 11시 ~ 12시 사이에 , 미래에 대한 나의 계획을 적어보자 라는 생각에서 시작했습니다.
Future이 생각이 났고, callable의 call()을 이용해서 나의 생각을 코드로 만들어보자 해서, 하다가 이렇게 만들어진 코드입니다. 저의 계획 및 생각을 int형으로 말할수 가 없어서, List<String>이 생각나서 이렇게 만들어졌습니다.
간략하자면 미래에 대한 스케줄 링 표? 이런 게 되겠네요
그냥 future 및 call()이 생각나서 이렇게 만들었다. 밖에 말할수 없네요.
0
안녕하세요, 인프런 AI 인턴입니다. 생각하는자님.
작성하신 질문은 Java의 Callable 인터페이스를 이용하여 리스트 값을 비동기적으로 처리하는 방법에 관한 것 같습니다. 이에 대해 적절한 답변을 제공해 드리겠습니다.
Callable 인터페이스는 자바에서 비동기적으로 작업을 수행할 수 있도록 하는 일종의 계약(인터페이스)입니다. Callable은 Runnable과 유사하지만, 작업이 완료되었을 때 결과를 반환할 수 있다는 점에서 차이점이 있습니다.
코드 검토 및 팁
Future 객체 사용:
ExecutorService에 작업을 제출하고Future객체를 사용하여 그 결과를 받아오는 방식은 자바에서 비동기 프로그래밍을 처리하는 전형적인 방법입니다.Future.get()메소드를 호출하면 비동기 작업의 결과를 대기할 수 있으며, 해당 작업이 완료될 때까지 블록됩니다.List 처리: 코드 상에서
Callable을 활용하여 리스트를 처리하는 것은 좋은 방법입니다. 여러 작업을 병렬로 처리하고 결과를 합산하여 목록으로 만들고자 할 때 유용합니다.코드의 유연성: 만약 작업 단위가 매우 작아서 오히려 병렬 처리의 오버헤드가 생길 가능성이 있다면, 작업 단위를 조금 더 큰 단위로 조정하는 것도 고려해보세요.
관련하여 비슷한 질문에 대한 답변이 있는 URL은 아직 확인되지 않았습니다. 그러나, Java Concurrency 및 Callable 관련 게시글도 참고하시면 추가적인 도움을 받을 수 있습니다.
제공해주신 코드 스니펫이 충실하다면, 일반적인 사용 사례로서 잘 구현된 코드로 보이며 문제는 없어 보입니다. 추후 발생할 수 있는 오류나 추가적인 기능에 대해서는 지속적으로 테스트하고 검토해야 할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
모니터와 synchronized, ReentrantLock, 원자적연산 CAS관련해서 추가적으로 더 깊게 공부했는데 제가 이해한 것이 맞나요??
0
85
1
Future cancel기능을 사용했지만 interrupt가 발생하지 않을 때 어떻게 처리해야하나요?
0
72
2
2.스레드 생성과 실행 - 17P 그림 문의
0
73
2
자바 동시성 현업에서 사용예시가 궁금합니다
0
133
1
ReentrantLock 동작 원리에 대한 질문입니다.
0
82
1
synchronized 대신 join 을 사용하여 순서를 보장할 경우 해법이 아닌가요?
0
93
2
메모리 가시성 문제 질문
0
71
1
Future4-이유 질문
0
64
1
오타 제보
0
74
2
runnable 질문
0
95
2
자바가 아닌 다른 언어에서도
0
111
1
메모리 가시성 문제가 발생하는 이유
0
125
1
데몬스레드가 어떨 때 사용이 되는지 궁금합니다.
0
78
1
Future.cancel() 취소를 사용하는 예가 궁금합니다.
0
84
1
synchronized 와 인스턴스의 lock
0
90
2
synchronized 키워드만으로 메모리 가시성이 해결되는 이유가 궁급합니다.
0
62
1
[스레드 풀과 Executor 프레임워크1][문제와 풀이] `log("일부 작업이 실패했습니다.");` 실행되는 경우가 있을까요?
0
59
1
원자적 연산이 멀티스레드 상황에서 안전한 이유를 제대로 이해했는지 확인 부탁드립니다
0
67
2
자바 고급 1,2,3편 같이 진행해도 문제없나요
0
77
2
CPU 캐시 때문에도 잔액이 200원이 될 수 있나요?
0
105
2
synchronized 메서드와 join 관련 질문이 있습니다.
0
69
2
섹션 14. 115번 강의 내용 질문
0
82
2
교안에 있는 7페이지 데이터 영역
0
51
1
Executor 스레드 풀 관리 질문
0
108
2






