java AtomicInteger,javaatomicinteger

來源:互聯網
上載者:User

java AtomicInteger,javaatomicinteger

AtomicInteger,一個提供原子操作的Integer的類。在Java語言中,++i和i++操作並不是安全執行緒的,在使用的時候,不可避免的會用到synchronized關鍵字。而AtomicInteger則通過一種安全執行緒的加減操作介面。



import java.text.SimpleDateFormat;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;




/**
 * @Description
 * @Author 
 * @Date 2015-5-8 上午9:37:45
 */
public class ConcurrentAtomicTest {


private final static AtomicInteger atomicInteger=new AtomicInteger(1);
private static volatile int integer=1;;


/**
* @Description TODO
* @Return void
* @Throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// testAtomicInteger();
testInteger2();


}


public static void testAtomicInteger() {
String time = new SimpleDateFormat("HH:mm:ss").format(new Date());
System.out.println("Start time : " + time);

int temp=atomicInteger.addAndGet(1);//add
atomicInteger.get();//get current
System.out.print(temp+",");

temp=atomicInteger.decrementAndGet();//Atomically decrements by one the current value.
System.out.print(temp+",");

temp=atomicInteger.getAndIncrement();//Atomically decrements by one the current value.
System.out.print(temp+",");

temp=atomicInteger.intValue();//Atomically decrements by one the current value.
System.out.print(temp+",");

atomicInteger.set(0);//Atomically decrements by one the current value.
temp=atomicInteger.get();
System.out.println(temp+",");

//result:2,1,1,2,0,


ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5); // 建立5個執行線程


Runnable runnable = new Runnable() {
@Override
public void run() {
String time = new SimpleDateFormat("HH:mm:ss").format(new Date());
atomicInteger.incrementAndGet();
System.out.println("Now Time : " + time+",integer:"+integer);
}
};


executor.scheduleWithFixedDelay(runnable, 2, 3, TimeUnit.SECONDS);
}

/**
* 測試int加1
* @Description TODO
* @Return void 
* @Throws
*/
public static void testInteger2() {
String time = new SimpleDateFormat("HH:mm:ss").format(new Date());
System.out.println("Start time : " + time);

integer++;
System.out.println("integer ++:"+integer);

integer--;
System.out.println("integer --:"+integer);


ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5); // 建立5個執行線程


Runnable runnable = new Runnable() {
@Override
public void run() {
String time = new SimpleDateFormat("HH:mm:ss").format(new Date());
integer=integer+1;
System.out.println("Now Time : " + time+",testInteger2 Integer:"+atomicInteger.get());
}
};


executor.scheduleWithFixedDelay(runnable, 2, 3, TimeUnit.SECONDS);
}
// Start time : 10:27:16
// integer ++:2
// integer --:1
// Now Time : 10:27:18,testInteger2 Integer:1
// Now Time : 10:27:21,testInteger2 Integer:1
// Now Time : 10:27:24,testInteger2 Integer:1
// Now Time : 10:27:27,testInteger2 Integer:1


}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.