|
|
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
Привет. Есть джава класс. Вот код: Код: 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. Интересно, почему в 111.txt значения nRes не смежные. Например кусок из файла: file ... nRes=7,0 nRes=6,24 nRes=5,20 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2017, 23:58 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
зеленый админПривет. Есть джава класс. Вот код: Читайте, пожалуйста, кодконвеншн , пока не пожелтеете зеленый админИнтересно, почему в 111.txt значения nRes не смежные. А почему они должны быть смежными? Какие прочитанные докумнеты ведут к такому выводу? Или в С++/delphi вывод будет упорядочен? Всё нормально- потоки выполняются как-то. Никто не обещал, что они будут выполнятся одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 06:30 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
Собственно каждый потокнахватал себе чисел в одном порядке, а вывод пошёл в другом (так же случайном) порядке. Упорядоченность только в массиве каждого потока, а вот слияник (по сути тут слияние через файл) прошло... как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 06:34 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, Алексей, вы не поняли вопрос. Я не говорю про сортировку значений при слиянии. Я говорю про последовательность значений при одном nRes. И благодаря тому, что SaveResult есть synchronized, я ожидал такое поведение. Кстати, я добился результата в случае если SaveResult определен еще как static. И вот это поведение не похоже ни на одни языки, которые мне тут упомянули выше (при условии, что synchronized - это вход в критическую секцию). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 08:14 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
зеленый админЯ говорю про последовательность значений при одном nRes. И благодаря тому, что SaveResult есть synchronized, я ожидал такое поведение. synchronized никак не влияет на порядок. зеленый админКстати, я добился результата в случае если SaveResult определен еще как static. Кстати, это к многопоточности отношения не имеет вообще никакого. зеленый админИ вот это поведение не похоже ни на одни языки, которые мне тут упомянули выше (при условии, что synchronized - это вход в критическую секцию). И какое же там поведение? Все входы в критическую секцию строго упорядочены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 09:07 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
зеленый админAlexey Tomin, Алексей, вы не поняли вопрос. Я не говорю про сортировку значений при слиянии. Я говорю про последовательность значений при одном nRes. А разве она нарушена? зеленый админfile ... nRes=7,0 nRes=6,24 nRes=5,20 ... Здесь путаница именно что для разных nRes ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 09:28 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
зеленый админПривет. Есть джава класс. Вот код: А вообще код вызывает вопрос- а что, собственно, Вам хотелось? Чем больше читаю, тем больше он меня удивляет. Например - оба synchronized не нужны, т.к. они не делают ровным счётом НИЧЕГО. Массив не нужен. Ну и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 09:44 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
зеленый админ... 1. Сделайте SaveResult и GetNext статическими, тогда эти методы будут исполняться одновременно только в одном потоке, видимо как это предполагается. Сейчас они исполняются без синхронизации. 2. И я бы советовал start() из конструктора не вызывать, может привести к Race Conditions. Вызывайте явно после создания экземпляра потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 11:34 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
зеленый админ, И прочитатье гайд по стилю кодирования в Java, как уже советовали. Никто в Java не добавляет к названиям классов перфикс T, как в Delphi (TTestThread). Префиксы для полей класса - не нужны (mValue). Венгерская нотация - не нужна (nValue). Названия методов - с маленькой буквы (SaveResult). Исключения просто так не давите. В крайнем случае выведете его в лог или на консоль. Лучше в лог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 11:42 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
Blazkowiczзеленый админКстати, я добился результата в случае если SaveResult определен еще как static. Кстати, это к многопоточности отношения не имеет вообще никакого. Как это не имеет?!?! Мониторы же разные. В одном случае класс в другом экземпляр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 14:00 |
|
||
|
многопотоковая проблемка в джаве
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Как это не имеет?!?! Мониторы же разные. В одном случае класс в другом экземпляр. Да, точно! С таким чудным соглашеним о кодировнии сложно понять зачем Thread-классу не статические synchronized методы, в принципе. В этом-то и основной косяк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2017, 14:19 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2122812]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
6ms |
get first new msg: |
3ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 301ms |

| 0 / 0 |
