博客专栏  >  编程语言   >  Java多线程/并发

Java多线程/并发

快速上手运用java多线程开发

关注
11 已关注
27篇博文
  • Java多线程/并发01、新建线程的3种方法

    引子首先要理解并发(Concurrency)和并行(Parallelism)的区别: 并发是在同一时段发生。多线程就是分时利用CPU,宏观上让所有线程一起执行,也叫并发。但在微观上不是同时执行的,只是...

    2017-04-28 15:46
    341
  • Java多线程/并发02、线程的五种状态

    本篇摘录了网上相关文档和图片。 VM启动时会有一个由主方法Main所定义的主线程,在主线程中可以通过Thread创建其它线程。 Thread对象的方法run()称为线程体。通过调用Thread类的...

    2017-04-28 15:50
    373
  • Java多线程/并发03、实现定时任务的3种方法

    所谓定时任务有两个核心要素: 1、任务开始时间:可以指定任务在将来某个时间点运行,或者指定任务从现在开始延迟一个时间段运行 2、任务执行周期:可以指定该任务每间隔多久执行一次Java实现定时任务有...

    2017-04-28 15:52
    729
  • Java多线程/并发04、synchronized同步

    一、synchronized使用多个线程并发时,经常面临的问题就是会操作相同的资源。比如商品下单,库存量修改,转帐等。 举个例子: 家里有一口炒菜的锅,老大要做辣椒炒肉(制作步骤:a1.放肉,a2...

    2017-04-28 15:59
    230
  • Java多线程/并发05、synchronized应用实例:线程间操作共享数据

    电商平台中最重要的一点就是卖东西。同个商品不能无限制的卖下去的,因为商品有库存量,超过库存就不能卖了。 这里,约定一个规则,下单使库存减n,取消订单使库存加m。库存数量不可以小于0。 假设平台上同...

    2017-04-28 16:03
    385
  • Java多线程/并发06、线程锁Lock与ReadWriteLock

    java的基本锁类型,都以接口形式出现,常用的有以下两种锁的接口: Lock锁。它的实现有ReentrantLock, ReentrantReadWriteLock.ReadLock, Reentr...

    2017-04-28 16:07
    292
  • Java多线程/并发07、Thread.Join()让调用线程等待子线程

    开始之前,有几点要理解的: 1、当程序运行的时侯,系统默认开启了一个主线程(假设命名mainThread)。通常我们在Main()函数中定义主线程的工作。 2、可以在Main()函数中启动多个子线...

    2017-04-28 16:31
    524
  • Java多线程/并发08、中断线程 interrupt()

    一个线程是否能让另一个线程停止运行?除了线程同步互斥机制之外,还有两种方法: 可以使用Thread.stop(), Thread.suspend(), Thread.resume() 和Runtim...

    2017-04-28 16:34
    238
  • Java多线程/并发09、浅谈volatile

    在了解volatile之前,先介绍一个名词:liveness failure ,直译叫作活性失败。因为这是volatile很重要的一个应用场景:public class volatileDemo { ...

    2017-04-28 16:37
    824
  • Java多线程/并发10、不可重入锁/自旋锁、可重入锁

    锁分为可重入锁和不可重入锁。 可重入和不可重入的概念是这样的:当一个线程获得了当前实例的锁,并进入方法A,这个线程在没有释放这把锁的时候,能否再次进入方法A呢? 可重入锁:可以再次进入方法A,就是说...

    2017-04-28 16:39
    1063
  • Java多线程/并发11、线程同步通信:notify、wait

    假设有两个线程,一个线程负责打印5次”Hello”,一个线程负责打印5次”Word”。现在提出一个要求,要求两个线程交替打印,也就是要求Hello和Word交替出现。 我们先实现两个线程打印字符的功...

    2017-04-28 16:42
    240
  • Java多线程/并发12、多线程访问static变量

    类的成员分为两类,静态成员(static member)和实例成员(instance member)。静态成员属于类;实例成员则属于对象,即类的实例。 先看一个类:public class stat...

    2017-04-28 16:46
    1643
  • Java多线程/并发13、保持线程间的数据独立: Collections.synchronizedMap应用

    现在流行分布式计算,分布式计算就是先分开计算,然后统一汇总。比如这道题目: 。先别跑,小学题很简单的。 解释一下,左边那一砣是计算从1加到n的值(求和),右边是n乘到1的值(阶乘),再把两个值相加...

    2017-04-28 16:50
    345
  • Java多线程/并发14、保持线程间的数据独立:ConcurrentHashMap应用

    在Java 1.5之前,如果需要可以在多线程和并发的程序中安全使用的Map,只能在HashTable和Collections.synchronizedMap中选择,因为它们的put、reomve和co...

    2017-04-28 16:53
    338
  • Java多线程/并发15、保持线程间的数据独立:ThreadLocal应用

    文档上(http://docs.oracle.com/javase/7/docs/api/java/lang/ThreadLocal.html)这么写的 This class provides t...

    2017-04-28 17:03
    269
  • Java多线程/并发16、Atomic原子变量和原子操作

    在Java中,i++这类的操作看起来只有一行,其实java 分成了三步去做 1、获取i值 2、计算i+1; 3、将结果存入i; 因此i++不是原子操作,非线程安全的,多线程访问的时候需要用到s...

    2017-04-28 17:11
    679
  • Java多线程/并发17、简述CAS 操作

    摘录网上一些文章什么是CASCAS,Compare and Swap即比较并交换。 java.util.concurrent包借助CAS实现了区别于synchronized同步锁的一种乐观锁。乐观...

    2017-04-28 17:14
    319
  • Java多线程/并发18、Java线程池

    用过数据库的,都了解连接池概念。为了减少建立连接的开销,预先建立好多条连接,由连接池对象统一管理。当有进程需要连接数据库时,就分配一条空闲的连接给它,用完再被收回等待分配给下一个进程使用。 线程池的...

    2017-04-28 17:17
    240
  • Java多线程/并发19、Callable、Future接口及CompletionService的应用

    我们知道Runable()是无法直接返回值的。如果某个线程想获取另一个线程中变量的值,怎么办呢? Java为我们提供了一种处理模式——Future模式: 线程A(生产者)处理一个很耗时的工作,将会...

    2017-05-04 20:47
    210
  • Java多线程/并发20、Future实现类:FutureTask

    FutureTask是future的实现类,它同时实现了两个接口:Runnable和Future,所以它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。因此我...

    2017-05-04 20:52
    526

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部