Нужно ли мне использовать volatile, если 2 разных потока записи и чтения никогда не будут работать одновременно

Ссылаясь на http://www.javamex.com/tutorials/synchronization_volatile.shtml , я не уверен, нужно ли мне использовать volatile ключевое слово в следующем случае, из-за дополнительного правила 3.

  1. Примитивная статическая переменная будет записана потоком A.
  2. Та же самая примитивная статическая переменная будет прочитана потоком B .
  3. Поток B будет запущен только после того, как поток A «мертв». ("мертвый" означает, что последний оператор пустого выполнения потока A завершен)

Будет ли записано новое значение потоком 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 int main () {int val1, val2; printf ("Введите первое значение"); scanf ("% d", значение1); scanf ("% d", & val2); int c; c = значение1 + значение2;

class MyClass< T extends Integer[] > { } // ERROR!

Почему?

10
задан Qantas 94 Heavy 1 May 2014 в 09:18
поделиться