
Java并发编程
Tong_Nan
这个作者很懒,什么都没留下…
展开
-
java并发编程(一)并发基础
java并发编程(一)并发基础何为进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。何为线程?线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的...原创 2019-08-12 11:12:50 · 195 阅读 · 0 评论 -
java并发编程(二)ThreadLocal
java并发编程(二)ThreadLocal多钱程访问同一个共享变量时特别容易出现并发问题,特别是在多个线程需要对一个 共享变量进行写入时。 为了保证线程安全,一般使用者在访问共享变量时需要进行适当的 同步。同步的措施一般是加锁,这就需要使用者对锁有一定的了解, 这显然加重了使用者的 负担。 那么有没有一种方式可以做到,当创建一个变量后, 每个线程对其进行访问的时候 访问的是自己线程的变量呢?...原创 2019-08-12 11:47:32 · 173 阅读 · 0 评论 -
java并发编程(三)并发基础进阶
java并发编程(三)并发基础进阶什么是多线程并发编程首先要澄清并发和并行的概念,并发是指同一个时间段内多个任务同时都在执行,并 且都没有执行结束,而并行是说在单位时间 内多个任务同时在执行。 并发任务强调在一个 时间段内同时执行,而一个时间段由多个单位时间累积而成,所以说并发的多个任务在单 位时间内不一定同时在执行。为什么要进行多线程并发编程多核 CPU 时代的到来打破了单核 CPU 对...原创 2019-08-12 11:55:55 · 184 阅读 · 0 评论 -
java并发编程(四)synchronized 关键字+volatile关键字
java并发编程(四)synchronized 关键字+volatile关键字在 Java 早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一个线程,都需要操作系统帮忙完成,而操作系统实现线程之间的切换时需要从用户态转换到内核态,...原创 2019-08-12 13:05:36 · 358 阅读 · 0 评论 -
java并发编程(五)并发中的锁
java并发编程(五)并发中的锁1乐观锁和悲观锁1.1悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchron...原创 2019-08-12 15:56:15 · 316 阅读 · 0 评论 -
java并发编程(六)抽象同步队列AQS+Semaphore+CountDownLatch+CyclicBarrier
java并发编程(六)抽象同步队列AQS+Semaphore+CountDownLatch+CyclicBarrierAbstractQueuedSynchronizer 抽象同步队列简称 AQS,它是实现同步器的基础组件, 并发包中锁的底层就是使用 AQS 实现的,这个类在java.util.concurrent.locks包下面AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地...原创 2019-08-12 17:45:18 · 350 阅读 · 0 评论 -
java并发编程(七)Java线程池
java并发编程(七)Java线程池在一个应用程序中,我们需要多次使用线程,也就意味着,我们需要多次创建并销毁线程。而创建并销毁线程的过程势必会消耗内存。而在Java中,内存资源是及其宝贵的,所以,我们就提出了线程池的概念。线程池:Java中开辟出了一种管理线程的概念,这个概念叫做线程池,从概念以及应用场景中,我们可以看出,线程池的好处,就是可以方便的管理线程,也可以减少内存的消耗。那么,我...原创 2019-08-28 14:38:16 · 305 阅读 · 0 评论