Я тільки почав читати Паралельність Java на практиці, з сторінки 17:
Ми використовували терміни "безпечний потік" і"Безпечна нитка" майже взаємозамінні. Це потокобезпечна програма, яка є такою побудовані виключно з потокобезпечних класів? Не обов'язково - a Програма, яка складається виключно з потокобезпечних класів, може не бути безпечний потік, і безпечна для потоків програма може містити класи, які є не є потокобезпечним.
- Як безпечна програма з нитками може містити класи, які не захищені потоками? додатковий приклад коду буде дійсно оцінений.
Відповіді:
5 за відповідь № 1Є два основних випадки, де це можливо:
Об'єкти, які не захищені потоками, обмежуються окремими потоками.
Доступ до спільних об'єктів, що не є безпечними для потоків, координується зовні зовнішніми потоками. Надзвичайно спрощений приклад: синхронізуючи весь доступ з
synchronized( sharedObject ) { sharedObject.access(); }
1 для відповіді № 2
Оскільки до локальних змінних доступний лише один потік, програма може бути потокобезпечною та використовувати локальні змінні, клас яких є не-потокобезпечним в інших обставинах.