понедельник, 5 декабря 2011 г.

Две интересные вещи про volatile

Большинство Java разработчиков мало мальски знакомых с многопоточностью, знают:

Что операции с переменной помеченной как volatile синхронизируют кеши потоков! 

Однако мало кто знает следующие две вещи:


  1. Суть кеша потока зависит от архитектуры системы, для большинства из нас это x86, а это значит что кеш потока это регистры и кеши процессора.  
  2. Поскольку x86 это симметричная мультипроцессорная система, то volatile особо и не нужен в виде синхронизации кешей потоков, ведь для таких систем сама аппаратура обеспечивают когерентность кешей.

Так что читай господа и думайте, а то на собеседованиях ходить тошно!

Комментариев нет: