|
|
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
Дали задачку написать ConcurrentHashMap для long. Я что-то не вкурил в чем суть немного зачем именно для лонга. Первое, что в голову приходит, это создать класс, у которого будет массив HasMap. Допустим их изначально будет 16. или даже не HashMap-ов, а обёрток HashMap-ов , которые оборачивает операции чтения в readLock,а мутабельные операции во writeLock. Что вы думаете? в том направлении мыслю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 00:19 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
questionerЯ что-то не вкурил в чем суть немного зачем именно для лонга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 08:38 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
questionerЯ что-то не вкурил в чем суть немного зачем именно для лонга. Возможно, потому что запись и чтение long не атомарны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 08:39 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Вроде нет. Можно и int и short оказывается. На выбор, что больше нравится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 09:24 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
Так в исходниках всё написано: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/java/util/concurrent/ConcurrentHashMap.java#107 Брать CHM из Java8 за образец не советую - там очень сложная реализация. Почему для лонга - потому, что стандартный CHM работает только с объектами, а специализированный для примитивов должен быть быстрее. И - обязательно сделай тесты под разными профилями нагрузки. Чтобы они показывали, насколько твоя реализация круче стандартной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 13:11 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
scfТак в исходниках всё написано: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/java/util/concurrent/ConcurrentHashMap.java#107 Брать CHM из Java8 за образец не советую - там очень сложная реализация. Почему для лонга - потому, что стандартный CHM работает только с объектами, а специализированный для примитивов должен быть быстрее. И - обязательно сделай тесты под разными профилями нагрузки. Чтобы они показывали, насколько твоя реализация круче стандартной. У меня просто представление, что CHM это такая мапа, которая, внутри себя содержит несколько мап и если происходит запись, то лочится только одна из этих мап. открыв исходники я что-то не увидел подмап никаких ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 16:28 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
scfТак в исходниках всё написано: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/java/util/concurrent/ConcurrentHashMap.java#107 Брать CHM из Java8 за образец не советую - там очень сложная реализация. Почему для лонга - потому, что стандартный CHM работает только с объектами, а специализированный для примитивов должен быть быстрее. И - обязательно сделай тесты под разными профилями нагрузки. Чтобы они показывали, насколько твоя реализация круче стандартной. у примитива хэшкод проще посчитать. поэтому "круче" что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 11:26 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
questionerУ меня просто представление, что CHM это такая мапа, которая, внутри себя содержит несколько мап и если происходит запись, то лочится только одна из этих мап. Это "представление" чем-то обусловлено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 13:13 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
questioner, У примитива удаление записью null не с имитируешь. Вопрос к ТС - а long это ключ или значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 13:29 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerУ меня просто представление, что CHM это такая мапа, которая, внутри себя содержит несколько мап и если происходит запись, то лочится только одна из этих мап. Это "представление" чем-то обусловлено? Чтивами всякими. Исходники какие-то слишком сложные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 20:13 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestioner, У примитива удаление записью null не с имитируешь. Вопрос к ТС - а long это ключ или значение? Ключ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 20:13 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Вот есть такой вариант... но что-то я предвижу здесь миллион косяков. помогите поправить Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 20:14 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
questioner Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:35 |
|
||
|
Наивная реализация ConcurrentHashMap
|
|||
|---|---|---|---|
|
#18+
В этом варианте такого не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39028445&tid=2125056]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 337ms |

| 0 / 0 |
