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

电商网站开发论文重庆seo网络推广平台

电商网站开发论文,重庆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.laogonggong.com/news/40185.html

相关文章:

  • 2019年做网站还有机会吗怎么在百度上免费做广告
  • 网站如何做会员通用做网络推广有前途吗
  • 深圳网站制作公司流程拓客app下载
  • 网站主机托管怎么推广平台
  • 郑州网站公司郑州seo技术顾问
  • 做调查网站赚钱游戏app拉新平台
  • 网站做权重的好处百度小说搜索风云榜
  • 百度 网站建设新闻网站排行榜
  • 四川网站网站建设石家庄抖音seo
  • 独立购物商城网站制作前端seo怎么优化
  • 益阳注册公司网络优化seo是什么工作
  • 最好的微网站建设公司宜昌网站seo
  • 搜索引擎优化方法有哪几种seo发帖论坛
  • 制作网页的网站有哪些沧州网站seo公司
  • 手机app设计网站建设蚁百杭州网站seo优化
  • 如何做百度站长绑定网站青岛网站建设公司排名
  • 做那个的网站谁有推广恶意点击软件怎样使用
  • 申请域名后如何发布网站seo关键词优化排名外包
  • 建设网站免费使用成都企业seo
  • 基于html5的旅游网站的设计网络营销策划推广公司
  • 花钱推广的网络平台网站性能优化
  • 象山建设局网站网站建设的技术支持
  • 太原专业做网站网站seo方案案例
  • 绍兴 网站制作优化大师官网下载安装
  • 团购网站自个做seo如何提高网站排名
  • crm在线演示百度seo官网
  • 坪地网站制作地推网
  • 做网站衡水网络舆情监测专业
  • 为违法网站做推广进去要几年logo网站设计
  • 陕西网站建设公司找哪家好百度竞价排名什么意思