В языке Java для атомарной работы с одной переменной в многопоточном приложении существуют несколько способов. Напрмер можно использовать обобщённый способ, который подходит не только для атомарного доступа к переменной, но и для других целей. Это использование блоков или методов synchronized, например так:
public class Test2 extends Thread { public Test2(String name){ super(name); } public synchronized static void incrementCount(){ count++; } @Override public void run(){ int sleepTime = 0; for(int i = 0; i < 100; i++){ sleepTime = (int)(Math.random()*10); try { sleep(sleepTime); } catch (InterruptedException e) { e.printStackTrace(); } incrementCount(); } } public static int getCount(){ return count; } private static int count = 0; }Но в языке Java для атомарного доступа к одной переменной существует более элегантный способ. Это классы пакета java.util.concurrent.atomic. Напрмер для целочисленной переменной код будет выглядеть вот так:
import java.util.concurrent.atomic.AtomicInteger; public class Test4 extends Thread { public Test4(String name){ super(name); } @Override public void run(){ int sleepTime = 0; for(int i = 0; i < 100; i++){ sleepTime = (int)(Math.random()*10); try { sleep(sleepTime); } catch (InterruptedException e) { e.printStackTrace(); } count.incrementAndGet(); } } public static int getCount(){ return count.intValue(); } private final static AtomicInteger count = new AtomicInteger(0); }
How to Start a Casino - JamBase
ОтветитьУдалитьCasino 강릉 출장마사지 is 서귀포 출장안마 a relatively new online 안성 출장샵 casino. It was established in 2010 and is 경상남도 출장안마 owned by Evolution Gaming Group. The operator is 화성 출장마사지 now licensed to offer a