java怎样制作线程安全的计数器?

发布时间:2020-05-07 11:14:42 作者:Leah
来源:亿速云 阅读:251

java怎样制作线程安全的计数器?相信大部分人都不太了解,今天小编为了让大家更加了解java怎样制作线程安全的计数器,给大家总结了以下内容,一起往下看吧。

public class Count{
	private int count = 0;
	private AtomicInteger atomicI = new AtomicInteger(0);
	public static void main(String[] args){
		final Count cas = new Count();
		List<Thread> list = new ArrayList<Thread>();
		long start = System.currentTimeMillis();
		for(int j=0;j<100;j++){
			Thread t = new Thread(new Runnable(){
				@Override
				public void run(){
					for(int i=0;i<1000;i++){
						cas.count();
						cas.safeCount();
					}
				}
			});
			list.add(t);
		}
		//启动线程
		for(Thread t:list){
		t.start();
		}
		//等待所有线程执行完毕
		for(Thread t:list){
			try{
				t.join();
				}catch(Exception e){
				e.printStackTrace();
				}
		}
		System.out.println("线程不安全:"+cas.count);
		System.out.println("线程安全:"+cas.atomicI.get());
		System.out.println("耗时:"+(System.currentTimeMillis() - start));
	}
	/**线程不安全的计数器*/
	public void count(){
		count++;
	}
	/**线程安全的计数器,循环CAS*/
	public void safeCount(){
		for(;;){
			int temp = atomicI.get();
			if(atomicI.compareAndSet(temp,++temp))
			  break;
		}
	}
}

执行结果:

java怎样制作线程安全的计数器?

以上就是java如何实现线程安全的计数器的内容,有需要的朋友可以参考一下,望对大家有所帮助,更多请关注亿速云其它相关文章!

推荐阅读:
  1. PHP学习之制作图片计数器
  2. redis制作计数器的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java 计数器

上一篇:html 单标签

下一篇:python中set和list有什么区别?

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》