Возможно, столбец с указанием (ноль) может содержать текст? В противном случае кажется правильным.
Действительно необходимо классифицировать тип Вектора Java потокобезопасности. Вектор Javas безопасен использоваться от нескольких потоков, потому что он использует синхронизацию на методах. Состояние не будет повреждено.
Однако полноценность вектора Java ограничена от нескольких потоков без дополнительной синхронизации. Например, рассмотрите простое действие чтения элемента от вектора
Vector vector = getVector();
if ( vector.size() > 0 ) {
object first = vector.get(0);
}
Этот метод не повредит состояние вектора, но это также не корректно. Нет ничего мешающего другому потоку видоизменить вектор, промежуточный, если оператор получение () звонит. Этот код может и в конечном счете перестать работать из-за состояния состязания.
Этот тип синхронизации только полезен в небольшом количестве сценариев, и это, конечно, не дешево. Вы платите noticable цену за синхронизацию, даже если Вы не используете несколько потоков.
.NET принял решение не заплатить эту цену по умолчанию за сценарий только ограниченной полноценности. Вместо этого это приняло решение реализовать блокировку бесплатный Список. Авторы ответственны за добавление любой синхронизации. Это ближе к модели C++ "платы только за то, что Вы используете"
Я недавно написал несколько статей об опасностях использовать наборы только с внутренней синхронизацией, такие как вектор Java.
Ссылочная Векторная потокобезопасность: http://www.ibm.com/developerworks/java/library/j-jtp09263.html
Почему это было бы ориентировано на многопотоковое исполнение? Не каждый класс. На самом деле, по умолчанию, классы не ориентированы на многопотоковое исполнение.
Быть ориентированным на многопотоковое исполнение означало бы, что любая операция, изменяющая список, должна будет взаимно блокироваться против одновременного доступа. Это было бы необходимо даже для тех списков, которые будут только когда-либо использоваться единственным потоком. Это было бы очень неэффективно.
Это - просто проектное решение реализовать типы, не ориентированные на многопотоковое исполнение. Наборы обеспечивают свойство SyncRoot
из интерфейса ICollection
и Synchronized()
метод на некоторых наборах для того, чтобы явно синхронизировать типы данных.
Использовать SyncRoot
заблокировать объект в многопоточных средах.
lock (collection.SyncRoot)
{
DoSomething(collection);
}
Использовать collection.Synchronized()
получить ориентированную на многопотоковое исполнение обертку для набора.
Для истинной потокобезопасности, List<>
и другие типы набора должны были бы быть неизменными. С параллельными расширениями.NET, выходящей в.NET 4.0, мы будем видеть ориентированные на многопотоковое исполнение версии обычно используемых наборов. Jon Skeet затрагивает часть этого.
Возможность состояния состязания, которую упоминает JaredPar, является страшным последствием доверия воображаемой потокобезопасности Вектора. Это - вид вещи, которая заканчивается в "каждый девятый вторник, приложение делает что-то странное" - вид дефектного отчета, который будет управлять Вами безумный.
Существует много действительно ориентированных на многопотоковое исполнение наборов, прибывающих в.Net 4 с интересным побочным эффектом, который они позволяют однопоточную модификацию набора при перечислении, но существует хит производительности, который идет с потокобезопасностью, иногда довольно большая.
Таким образом, логической вещью для разработчика инфраструктуры сделать является содержание класс, максимально производительный для 95% пользователей, которые, вероятно, не будут делать поточной обработки и полагаться на тех, кто действительно мультираспараллеливает для знания то, что они должны сделать для защиты его.
Оказалось, что HureCardsPanel
не может добавить в родительскую рамку должным образом, как только это было исправлено, добавление нового JLabels
работает нормально. Я добавил вызов метода update ()
к потоку отправки событий
с помощью SwingUtillities.invokeLater
Мне пришлось дополнительно вызвать validate ()
из самого верхнего компонента (в данном случае JFrame
)
Возникла проблема с получением ошибки после установки компонентов подключения к данным Office 2007 . Проблема в том, что он 32-разрядный вызывается 64-разрядным процессом. Различные решения здесь
-121--3076056-используют SynchronesCollection, он также предоставляет Constructor-Parameter для использования общей синхронизации:)