Действительно ли множественное наследование возможно в .NET VB?

Что такое ключевое слово synchronized?

blockquote>

Потоки передаются в основном путем совместного доступа к полям и полям ссылок объектов. Эта форма коммуникации чрезвычайно эффективна, но допускает два типа ошибок: помехи потоков и ошибки согласованности памяти . Инструмент, необходимый для предотвращения этих ошибок, - это синхронизация.

Синхронизированные блоки или методы предотвращают взаимодействие потоков и обеспечивают согласованность данных. В любой момент времени только один поток может получить доступ к синхронизированному блоку или методу ( критический раздел ) путем приобретения блокировки. Другие потоки ждут освобождения блокировки для доступа к критическому разделу .

Когда синхронизируются методы?

blockquote>

Методы синхронизируются при добавлении synchronized в определение или объявление метода. Вы также можете синхронизировать определенный блок кода с помощью метода.

Что означает про грамматически и логически?

blockquote>

Это означает, что только один поток может получить доступ к критическому разделу , приобретя замок. Если этот поток не освободит эту блокировку, все остальные нити (ы) придется ждать, чтобы получить блокировку. У них нет доступа для входа в критический раздел без блокировки захвата.

Это невозможно сделать с помощью магии. Ответственность программиста заключается в том, чтобы определить критический раздел (ы) в приложении и защищать его соответствующим образом. Java предоставляет платформу для защиты вашего приложения, но где и что все разделы, подлежащие охране, несет ответственность программиста.

Подробнее о документации java странице

Внутренние блокировки и синхронизация:

Синхронизация построена вокруг внутреннего объекта, известного как встроенная блокировка или блокировка монитора. Внутренние блокировки играют роль в обоих аспектах синхронизации: принудительный эксклюзивный доступ к состоянию объекта и установление происходит до отношений, которые необходимы для видимости.

blockquote>

Каждый объект имеет встроенную блокировку связанных с ним . По соглашению поток, который нуждается в эксклюзивном и последовательном доступе к полям объекта, должен получить внутреннюю блокировку объекта перед доступом к ним, а затем освободить внутреннюю блокировку, когда она будет выполнена с ними.

Поток называется собственный встроенный замок между временем, когда он приобрел замок и освободил замок. Пока поток имеет встроенную блокировку, ни один другой поток не может получить одну и ту же блокировку. Другой поток будет блокироваться, когда он попытается получить блокировку.

Когда нить освобождает встроенную блокировку, между этим действием и любым последующим приобретением одной и той же блокировки устанавливается связь между событиями и событиями.

blockquote>

Выполнение синхронных методов имеет два эффекта :

Во-первых, невозможно, чтобы две вызовы синхронизированных методов на одном и том же объект для чередования.

blockquote>

Когда один поток выполняет синхронизированный метод для объекта, все остальные потоки, которые вызывают синхронизированные методы для одного и того же объекта (приостановить выполнение) до тех пор, пока первый поток не будет выполнен с объектом.

Во-вторых, когда синхронизированный метод завершается, он автоматически устанавливает связь между событиями и последующим вызовом синхронизированного метода для одного и того же объекта.

blockquote>

Это гарантирует, что изменения состояния объекта будут видны для всех потоков.

Найдите другие альтернативы синхронизации в:

Избегайте синхронизации (это) в Java?

14
задан Steve Duitsman 8 December 2008 в 22:50
поделиться

2 ответа

Короткий ответ: Никакой

Немного более длинный ответ: Да, если Вы наследовали несколько интерфейсов и единственный базовый класс. Так как это обычно - причина MI (Вы хотите реализовать несколько интерфейсов), это обычно достаточно. Однако в тех редких экземплярах, где "реальный" MI полезен.NET препятствует тому, чтобы Вы делали его.

18
ответ дан 1 December 2019 в 12:14
поделиться

Возможно ограниченным способом в VB.Net таким же образом, что это находится в C#: через Интерфейсы. Так как интерфейс удается к по существу чистому абстрактному базовому классу, можно наследоваться от стольких из тех, сколько Вам нужно и от одного реального класса.

4
ответ дан 1 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: