当前位置: 首页 > news >正文

网站开发it项目规划书网站seo站群软件

网站开发it项目规划书,网站seo站群软件,网页游戏推广网站怎么做,企业咨询服务是做什么的目录 使用单线程使用多线程使用多线程 synchronized使用多线程 原子类AtomicLong 使用单线程 单线程修改计数器的值,没有发生问题,每次运行结果都是10000,不过程序耗时较长 package com.example;/*** 计数器*/ class Counter {private st…

目录

    • 使用单线程
    • 使用多线程
    • 使用多线程 + synchronized
    • 使用多线程 + 原子类AtomicLong

使用单线程

单线程修改计数器的值,没有发生问题,每次运行结果都是10000,不过程序耗时较长

package com.example;/*** 计数器*/
class Counter {private static long count;public static long getCount() {return count;}public static void incrementCount() {count++;}
}public class Demo {public static void main(String[] args) throws InterruptedException {long count = Counter.getCount();System.out.println(count);// 0for (int i = 0; i < 10000; i++) {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}Counter.incrementCount();}count = Counter.getCount();System.out.println(count);// 10000}
}

使用多线程

单线程修改计数器的值,运行速度提高了,不过运行结果每次都不一致,而且结果不是10000

package com.example;import java.util.ArrayList;
import java.util.List;/*** 计数器*/
class Counter {private static long count;public static long getCount() {return count;}public static void incrementCount() {count++;}
}public class Demo {public static void main(String[] args) throws InterruptedException {long count = Counter.getCount();System.out.println(count);// 0List<Thread> list = new ArrayList<>();// 启动10000个线程同时访问计数器for (int i = 0; i < 10000; i++) {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}Counter.incrementCount();}});list.add(thread);}for (Thread thread : list) {thread.start();}for (Thread thread : list) {thread.join();}count = Counter.getCount();System.out.println(count);}
}

执行结果

第一次:9910
第二次:9912
第三次:9910

使用多线程 + synchronized

多线程加锁后,最后结果都是10000

package com.example;import java.util.ArrayList;
import java.util.List;/*** 计数器*/
class Counter {private static long count;public static long getCount() {return count;}public static synchronized void incrementCount() {count++;}
}public class Demo {public static void main(String[] args) throws InterruptedException {long count = Counter.getCount();System.out.println(count);// 0List<Thread> list = new ArrayList<>();// 启动10000个线程同时访问计数器for (int i = 0; i < 10000; i++) {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}Counter.incrementCount();}});list.add(thread);}for (Thread thread : list) {thread.start();}for (Thread thread : list) {thread.join();}count = Counter.getCount();System.out.println(count);}
}

执行结果

第一次:10000
第二次:10000
第三次:10000

使用多线程 + 原子类AtomicLong

多线程中使用原子类AtomicLong实现计数器,最后结果都是10000

原理是CAS(Compare and Set):

  • 先比较原始值和预期值,如果相等,则修改为新值;
  • 不相等则修改失败

伪代码如下

bool compareAndSet(oldValue, expectValue, updateValue){if(oldValue == expectValue){oldValue = updateValue// update success} else{// update fail}
}
package com.example;import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;/*** 计数器*/
class Counter {private static AtomicLong count = new AtomicLong(0);public static long getCount() {return count.get();}public static void incrementCount() {count.incrementAndGet();}
}public class Demo {public static void main(String[] args) throws InterruptedException {long count = Counter.getCount();System.out.println(count);// 0List<Thread> list = new ArrayList<>();// 启动10000个线程同时访问计数器for (int i = 0; i < 10000; i++) {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}Counter.incrementCount();}});list.add(thread);}for (Thread thread : list) {thread.start();}for (Thread thread : list) {thread.join();}count = Counter.getCount();System.out.println(count);}
}

执行结果

第一次:10000
第二次:10000
第三次:10000

参考

  1. 使用Atomic-廖雪峰的官方网站
  2. CAS锁机制(无锁、自旋锁、乐观锁、轻量级锁)
  3. java中的Atomic类
http://www.dinnco.com/news/84846.html

相关文章:

  • 南昌盗网站少优化公司如何自己做一个软件
  • 手机网站建设品牌好推广平台有哪些渠道
  • 山东济南公厕辽宁seo推广
  • 做商城网站要什么手续企业网站排名优化价格
  • 晋江网站有什么职业做站长权重
  • 什么是设计方案优化seo培训班
  • 陕西哪些公司做企业网站推广网站的方法有哪些
  • 福州 网站定制设计营销网站建设多少钱
  • 即墨网站建设公司线上营销推广渠道
  • 网站建设教程搭建浊贝湖南岚鸿给力2022最新免费的推广引流软件
  • 做绿植o2o网站怎么样关键词优化有哪些作用
  • 网站备案可以国际域名沧州seo推广
  • 建设网站收费标准厦门人才网个人版
  • 书籍管理网站建设需求文档今日新闻头条10条
  • 苏州做网站公司找苏州聚尚网络网站安全
  • 就有公司域名怎么建设网站网络推广推广培训
  • 做一手房产中介用什么网站好在线培训app
  • 在家做网站或ps挣钱接活百度竞价推广价格
  • 成都网站优化公司下载百度app下载
  • 如何在国外网站做翻译兼职万网注册域名查询官方网站
  • 网站怎么做详情页搜索引擎优化百度
  • 电商网站系统建设考试免费百度下载
  • 猎头招聘网官网seo网络排名优化哪家好
  • 专门做中式的设计网站免费的网站软件下载
  • 牡丹江市建设银行门户网站免费找客源软件
  • 延吉市住房城乡建设局官方网站推广普通话手抄报内容大全
  • wordpress 模板 制作网站优化 福州
  • 做的网站上更改内容改怎么最新社会舆情信息
  • 杭州网站怎么做seoseo整站优化解决方案
  • 个人网站空间怎么做百度极速版下载安装