Как уже было сказано несколько раз здесь, вы можете создать новый поток (поместив долгое вычисление в Actor {}
block) внутри актора, и порожденные вычисления будут безопасно выполняться в том же пуле потоков (используемом планировщиком акторов).
actor{
var i = 0
case msg => actor {
// computation
i = i + 1 // is `i` still thread safe?
// looks like it can be access simultaneosly from 2 two threads now
// should I make it @volatile?
}
reply(i)
}
Однако будет ли он потокобезопасным и будет ли это следовать в в целом оригинальный дизайн, Какова стоимость вставки в набор (например, HashSet) по сравнению со списком (например, ArrayList)? Мне кажется, что дубликат ...
Я подумываю о заполнении коллекции большим количеством уникальных объектов. Какова стоимость вставки в набор (скажем, HashSet) по сравнению со списком (скажем, ArrayList)?
Я считаю, что удаление дубликатов в наборах может вызвать небольшие накладные расходы.