Java 6 또는 7을 사용하여 배열 자체에서 동기화하지 않고 여러 스레드에서 바이트 배열을 안전하게 채울 수 있습니까 (예 : 첫 번째 스레드가 처음 절반을 채우고 두 번째 스레드가 System.arraycopy를 사용하여 후반부를 채 웁니다.)? jsr166 관련 라이브러리에는 int 배열 (AtomicIntegerArray, ParallelIntegerArray) 만 있습니다.여러 스레드에서 바이트 배열을 안전하게 채우는 방법은 무엇입니까?
답변
예. 작동합니다. 배열 위치에 쓰기가 인근 위치를 방해하지 않습니다. 그러나 읽기 전에 모든 스레드가 완료되었는지 확인해야합니다 (happen-before 관계). 배열을 사용한다는 사실은 아무런 효과가 없습니다.
예, 조인은 Future.get() 형식으로되어 있습니다. 캐시 정렬이 걱정됩니다. 예를 들어 4096 + 4096으로 작성된 [8192] 배열은 문제없이 작동하지만 4095 + 4097은 그렇지 않을 수 있습니다. – akarnokd
적어도 MD5 데이터는 항상 동일하게 유지됩니다. 고맙습니다. – akarnokd
이렇게하면 비 원자 바이트 연산을 사용하여 바이트를 쓰는 것과 비교하여 단일 스레드 액세스에서는 Java 바이트 배열이 상당히 느립니 까? 제 말은, JIT 또는 arraycopy 구현이 루프 밖에서 검사하는 경계를 이동했다는 가정하에 말입니다. –
- 1. Ruby에서 배열을 채우는 방법은 무엇입니까?
- 2. C#에서 ListView를 안전하게 채우는 방법은 무엇입니까?
- 3. 작업자 스레드에서 안전하게 로깅합니까?
- 4. 안전하게 스레드에서 이벤트 발생시키기
- 5. 펄에서 바이트 배열을 만들고 사용하는 방법은 무엇입니까?
- 6. 바이트 배열을 문자열로 변환하는 방법은 무엇입니까?
- 7. 바이트 배열을 이미지 파일로 변환하는 방법은 무엇입니까?
- 8. 바이트 배열을 문자열로 변환하는 방법은 무엇입니까?
- 9. 바이트 배열을 Java로 고정하는 방법은 무엇입니까?
- 10. 바이트 배열을 파일에 추가하는 방법은 무엇입니까?
- 11. 한 스레드에서 변수를 안전하게 읽고 다른 스레드에서 수정하려면 어떻게해야합니까?
- 12. 여러 배열을 반복하는 방법은 무엇입니까?
- 13. 레일에있는 text_area에서 여러 필드를 채우는 방법은 무엇입니까?
- 14. 여러 스레드에서 정보를 얻는 방법은 무엇입니까? Java
- 15. Ruby/Rails에서 멀티 바이트 피드를 안전하게 구문 분석하는 방법은 무엇입니까?
- 16. 배열을 동적으로 채우는 PHP
- 17. 바이트 배열을 나타내는 Clojure
- 18. 델파이에서 바이트 배열을 정수로 변환
- 19. Objective-C에서 배열을 읽는 동안 한 스레드에서 배열을 안전하게 채우려면 어떻게해야합니까?
- 20. 배열을 효율적으로 검색하여 양식 필드를 채우는 방법은 무엇입니까?
- 21. 테이블을 채우는 방법은 무엇입니까?
- 22. 8 바이트 배열을 생성하는 방법은 각각 C에서
- 23. 바이트 배열을 함수에 전달
- 24. 바이트 배열을 사용하는 Datatable.select
- 25. 바이트 배열을 사용하는 deepHashCode
- 26. 바이트 배열을 사운드로 바꿉니다.
- 27. 여러 배열을 반복하는 가장 좋은 방법은 무엇입니까?
- 28. 2에서 여러 개의 배열을 만드는 방법은 무엇입니까?
- 29. 인터프리터에서 배열을 구현하는 방법은 무엇입니까?
- 30. Clojure에서 바이트 배열을 초기화하는 방법
이 질문에 감사드립니다. 필자는 배열 다중 스레드를 읽고 쓰는 것을 생각하지 않았습니다. 이것은 확실히 나의 서버 측 세계 발전기 및 가공업자에 도움이 될 것이다! 클라이언트의 초기 로딩시 이미지 상태 계산을 나눌 수도 있습니다! 나는 평평한 배열을 다차원 적으로 이미 속도로 사용하고 있지만,이 ^. ^. – Underbalanced