tag:blogger.com,1999:blog-410416665291724878.post604683442248444927..comments2022-12-19T13:52:22.907+04:00Comments on >рабочие заметки: Highly Scalable Java: 3Ruslan Chereminhttp://www.blogger.com/profile/01023948540752159657noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-410416665291724878.post-83285362146339848452011-09-20T01:22:29.924+04:002011-09-20T01:22:29.924+04:00Совершенно согласен! Чисто академический интерес. ...Совершенно согласен! Чисто академический интерес. Да и не знал я про AtomicReferenceArray ...Anonymoushttps://www.blogger.com/profile/06908778694732339503noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-23312467401248242632011-09-20T01:17:30.999+04:002011-09-20T01:17:30.999+04:00>Хотя так сходу пример даже и не придумаю
Прим...>Хотя так сходу пример даже и не придумаю<br /><br />Пример можно придумать, но он будет своеобразным. Тот же самый безблокировочный кэш, о котором я писал несколько месяцев назад. Там метод purge() неизвестно когда толком сработает -- т.е. значения могут застревать в кэше надолго. Это не влияет на семантику, но ухудшает производительность. так вот если там использовать вместо обычной записи Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-12356866568160591052011-09-20T01:08:30.715+04:002011-09-20T01:08:30.715+04:00Сорри, поздно уже, нверное, поэтому туплю. Так что...Сорри, поздно уже, нверное, поэтому туплю. Так что можешь удалить мои комменты. Это же дает возможность исползовать volatile чтение и запись только в определнных случах, а во всех остальных, допустим, использовать прямой доступ. Хотя так сходу пример даже и не придумаю :) <br />Да и спасибо, наконец-то я нашел способ писать/читать волатильно конкретный элемент final массива без специальных Anonymoushttps://www.blogger.com/profile/06908778694732339503noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-874194212671066702011-09-20T01:08:16.634+04:002011-09-20T01:08:16.634+04:00>А об этом где можно почитать по-подробнее
Под...>А об этом где можно почитать по-подробнее<br /><br />Подробнее -- собственно, в исходниках AtomicXXX -- смотреть использование. Либо скачивать полные исходники JDK и смотреть сам Unsafe с комментариями к методам. Но в общем-то это не особо полезно<br /><br />>Просто в этом случае же получается, что те же атомики из java.util.concurrent.atomic можно намного эффективнее написать<br /><br /><Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-80517995388445798982011-09-20T01:01:11.758+04:002011-09-20T01:01:11.758+04:00Или ты имеешь ввиду метод sun.misc.Unsafe#putXXXVo...Или ты имеешь ввиду метод sun.misc.Unsafe#putXXXVolatile и sun.misc.Unsafe#getXXXVolatile? Думаешь они быстрее обращений к обычным volatile переменным? Если же бы это было так, то JIT, ведь, бы всю эту магию всегда проделывал...?Anonymoushttps://www.blogger.com/profile/06908778694732339503noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-22923713217842898832011-09-20T00:54:33.473+04:002011-09-20T00:54:33.473+04:00Спасибо, не знал, что есть прямо обертка для масси...Спасибо, не знал, что есть прямо обертка для массива.<br /><br />Кстати, "Одним из интересных возможностей Unsafe является то, что через него можно делать волатильное чтение/запись и CAS обычных, неволатильных полей." А об этом где можно почитать по-подробнее. Просто в этом случае же получается, что те же атомики из java.util.concurrent.atomic можно намного эффективнее написать, в Anonymoushttps://www.blogger.com/profile/06908778694732339503noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-53083490232091340342011-09-20T00:22:23.755+04:002011-09-20T00:22:23.755+04:00Ну для простых смертных есть AtomicReferenceArray....Ну для простых смертных есть AtomicReferenceArray. Но Клиф -- он небожитель, он использует напрямую sun.misc.Unsafe. Все AtomicXXX реализованы (в Sun jdk, и всех его производных -- т.е. практически везде) через вызовы Unsafe, а вызовы Unsafe являются, насколько я знаю, интринсиками JIT-компилятора. Одним из интересных возможностей Unsafe является то, что через него можно делать волатильное Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-80820063632308721852011-09-20T00:16:03.764+04:002011-09-20T00:16:03.764+04:00А как CAS-то на массиве делать в java? Заполнять е...А как CAS-то на массиве делать в java? Заполнять его AtomicReference или есть более красивая возможность?Anonymoushttps://www.blogger.com/profile/06908778694732339503noreply@blogger.com