zoukankan      html  css  js  c++  java
  • Java并发编程概要

    1. 线程开的越多,则性能越好吗?
      未必,影响多线程性能的因素有:上下文切换,竞争/死锁,资源限制等。对于这些因素要均衡考量,才能获得较好的性能。
    2. 并发控制/线程间的通信方式
      基本的并发控制原语有 volatile, synchronized, ReentrantLock, Atomics, wait/nofify/nofityAll 等
      用于多个线程协调的类: countDownLatch,CyclicBarrier
      信号量: Semaphore, 可控制并发的数量
      两个线程交换数据: Exchanger
      异步等待返回结果:Future,FutureTask (另外也可通过回调实现)
      Volatile: 修饰字段/成员变量,对该变量的访问均需从共享内存中获取,对它的改变必须同步刷新回共享内存,可保证所有线程对变量访问的可见性(CAS)
      Synchronized: 可修饰方法或同步块,确保多个线程在同一时刻只有一个位于同步块中,保证线程对变量访问的可见性和排他性(串行执行),保证线程的本地副本与主存的同步
    3. 多线程两种方式的区别(Thread类和Runnable接口)
      参考http://blog.csdn.net/michellehsiao/article/details/7639788
      a)Runnable 适合多个相同程序代码处理统一资源的情况,可将数据有效分离,较好体现面向对象的编程思想(适用于资源的共享,Thread不可)
      b)Runnable接口 可避免Java单继承机制带来的局限,可继承其他类的同时,实现多线程的功能(扩展该接口)
      c)Runnable 可增加程序健壮性,代码可被多个线程共享
      d)Thread是Runnable接口的子类
      实际应用中以Runnable为主
  • 相关阅读:
    kubeadm升级证书-集群已GG
    匿名内部类
    JAVA中Integer的==和equals注意
    编写高效优雅安全Java程序的常见原则
    图解排序算法(二)之希尔排序
    String常见问题
    ActiveMQ 2
    消息中间件概述和AaciveMQ 1
    类加载器-5
    使用MyBatis编写Dao的两种语法
  • 原文地址:https://www.cnblogs.com/yunheyj/p/5812522.html
Copyright © 2011-2022 走看看