189 8069 5689

浅谈Java并发的底层实现-创新互联

并发编程的目的是让程序运行更快,但是使用并发并不定会使得程序运行更快,只有当程序的并发数量达到一定的量级的时候才能体现并发编程的优势。所以谈并发编程在高并发量的时候才有意义。虽然目前还没有开发过高并发量的程序,但是学习并发是为了更好理解一些分布式架构。那么当程序的并发量不高,比如是单线程的程序,单线程的执行效率反而比多线程更高。这又是为什么呢?熟悉操作系统的应该知道,CPU是通过给每个线程分配时间片的方式实现多线程的。这样,当CPU从一个任务切换到另一个任务的时候,会保存上一个任务的状态,当执行完这个任务的时候CPU就会继续上一个任务的状态继续执行。这个过程称为上下文切换。

创新互联专注于企业网络营销推广、网站重做改版、南阳网站定制设计、自适应品牌网站建设、H5建站商城开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为南阳等各大城市提供网站开发制作服务。

在Java多线程中,volatile关键字个synchronized关键字扮演了重要的角色,它们都可以实现线程的同步,但是在底层是如何实现的呢?

volatile

volatile只能保证变量对各个线程的可见性,但不能保证原子性。关于 Java语言 volatile 的使用方法就不多说了,我的建议是 除了 配合package java.util.concurrent.atomic 中的类库,其他情况一概别用。更多的解释 参见 这篇文章。


引子


参见如下代码


 package org.go;

public class Go {

  volatile int i = 0;

  private void inc() {
    i++;
  }

  public static void main(String[] args) {
    Go go = new Go();
    for (int i = 0; i < 10; i++) {
      new Thread(() -> {
        for (int j = 0; j < 1000; j++)
          go.inc();
      }).start();
    }
    while(Thread.activeCount()>1){
      Thread.yield();
    }
    System.out.println(go.i);
  }
}
 

分享题目:浅谈Java并发的底层实现-创新互联
文章转载:http://cdxtjz.com/article/doeodd.html

其他资讯