Ссылаясь на http://www.javamex.com/tutorials/synchronization_volatile.shtml , я не уверен, нужно ли мне использовать volatile
ключевое слово в следующем случае, из-за дополнительного правила 3.
Будет ли записано новое значение потоком A, всегда будет фиксироваться в основной памяти, после того как она "мертва"? Если да, значит ли это, что мне не нужно ключевое слово volatile
, если выполняются три вышеуказанных условия?
Я сомневаюсь, что в этом случае требуется volatile
. Если требуется, то ArrayList может сломаться. Поскольку один поток может выполнять вставку и обновление размерной
переменной-члена. Позже другой поток (не одновременно) может прочитать ArrayList
размер
. Если вы посмотрите исходный код ArrayList
, size
не объявлен как изменчивый.
В JavaDoc из ArrayList
, то только упомяните, что ArrayList
небезопасно использовать для одновременного доступа нескольких потоков к экземпляру ArrayList ,
Платформа: Windows Я пытаюсь определить настраиваемое ограничение @IdMustExist, используя JSR 303-Bean Validation. Цель ...
Фреймворк: JQuery, Spring, Hibernate, Hibernate Validator (проверка компонентов JSR-303)
Платформа: Windows
Я пытаюсь определить настраиваемое ограничение @IdMustExist с помощью JSR 303-Bean Validation. Цель ограничения - проверить, существует ли введенное значение id в связанной таблице. Я получаю сообщение об ошибке «javax.validation.UnexpectedTypeException: не удалось найти валидатор для типа: com.mycompany.myapp.domain.package1.class1».
Если я помещаю @IdMustExist в определение поля Class1 (как указано в примере кода ниже), я получаю указанную выше ошибку. Но если я помещаю ограничение @IdMustExist в поле String, я не получаю указанную выше ошибку. Мой код вылетает в IdMustExistValidator.java. Я не понимаю, почему Hibernate может найти Validator для класса 'String', но не для класса домена 'Class1'.
Мои определения класса следующие.
Class2.java
@Entity
@Table
public class Class2 extends BaseEntity {
/**
* Validation: Class1 Id must exist.
*/
@ManyToOne
@JoinColumn(name="Class1Id")
@IdMustExist(entity=Class1.class)
private Class1 class1;
..
IdMustExist.
#include
class MyClass< T extends Integer[] > { } // ERROR!
Почему?