java并发编程
❀架构师花花
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池 ExecutorService 详细介绍以及注意点区别
一 Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。ne...转载 2018-02-28 13:57:37 · 926 阅读 · 0 评论 -
显式锁Lock和其实现类ReentrantLock的使用方式
java有两种锁,隐式锁(synchronized)和显式锁(Lock),两种锁都能实现对共享资源的控制,但显式锁更加灵活。本文主要介绍:Lock和其实现类ReentrantLock的使用方式public interface Lock{ void lock(); // 获取锁 void lockInterruptibly(); // 优先考虑响应中断,而不是获取锁;使用此...转载 2018-12-13 11:13:30 · 219 阅读 · 0 评论 -
CPU-bound(计算密集型) 和I/O bound(I/O密集型)
CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆周率...转载 2018-07-09 16:25:02 · 307 阅读 · 0 评论 -
ThreadLocal理解
想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对ThreadLocal的理解 二.深入解析ThreadLocal类 三.ThreadLocal的应用...转载 2018-05-10 16:19:00 · 150 阅读 · 0 评论 -
多线程总结(一)
一、Thread类的应用 线程的生命周期: 创建,就绪,运行,阻塞,死亡; 下面是Thread类中常用的方法: 以下是关系到线程运行状态的几个方法:1)start方法 start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。2)run方法 run()方法是不需要用户来调用的,当...原创 2018-05-09 16:04:35 · 290 阅读 · 0 评论 -
线程8锁
package com.java.juc;/** * 题目:判断打印 "one" or "two" * * 1.两个普通同步方法,两个线程 ,标准打印,打印?// one two * 2.新增Thread.sleep(3000) 给getOne() 打印? // 3s 后打印 one two * 3.新增普通方法 getThreee 打印?// 先打印three 三秒后打印 one原创 2018-03-05 15:36:39 · 209 阅读 · 0 评论 -
线程按顺序交替打印
一个经典的面试题目:编写一个程序,开启3个线程。这3个线程的id分别为A、B、C.每个线程将自己的id在屏幕上打印10遍。要求输出的结果必须按顺序显示,如:ABCABCABCABCAB.......public class CopyOfTestConditionEffect { public static void main(String[] args) { final int cy...原创 2018-03-05 14:03:50 · 250 阅读 · 0 评论 -
一个简单的生产者-消费者 模型
/* * 生产者消费者案例: */public class TestProductorAndConsumerForLock { public static void main(String[] args) { Clerk clerk = new Clerk(); Productor pro = new Productor(clerk); ...原创 2018-03-02 15:41:28 · 520 阅读 · 0 评论 -
经典售票的多线程安全问题
示例代码:多线程安全问题此处通过syncronized关键字实现 也可通过lock上锁实现,在tick类中定义lock属性,在执行售票逻辑前上锁,售票逻辑执行完后在finally块中手动释放锁;public class SellTickets { public static void main(String[] args) { //创建车票对象,并初始化车票总数 ...原创 2018-03-02 14:09:06 · 276 阅读 · 0 评论 -
Java中的多线程概括总结
引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都对其中的一些概念不够明确...转载 2018-03-01 09:51:49 · 358 阅读 · 0 评论 -
两个lock的经典使用示例
示例一:public class NumberPrintDemo { // n为即将打印的数字 private static int n = 1; // state=1表示将由线程1打印数字, state=2表示将由线程2打印数字, state=3表示将由线程3打印数字 private static int state = 1; public static void main(St...原创 2018-02-28 17:33:23 · 615 阅读 · 0 评论 -
生产者/消费者模式(阻塞队列) 一个经典的并发模型
生产消费者模式也是关于线程阻塞的问题,生产消费者模式是通过观察者模式来实现的。之前在编写一个通讯软件的时候用到了这种模式,通过维护一个BlockingQueue来完成Socket的消息发送,后来读书时看到在服务器开发时三层模型中的Service层在调用Dao层的时候也是通过这种模式来调用的,具体怎么使用的还没有具体实践过,期待后面可以有机会练习这一块。实际的软件开发过程中,经常会碰到如下场景:某个...转载 2018-02-28 16:14:53 · 256 阅读 · 0 评论 -
ThreadPoolExecutor构造函数参数说明
为了更好的使用多线程,JDK提供了线程池供开发人员使用,目的在于减少线程的创建和销毁次数,以此达到线程的重复利用。其中ThreadPoolExecutor是线程池中最核心的一个类,我们先简单看一下这个类的继承关系。其中Executor是线程池的顶级接口,接口中只定义了一个方法void execute(Runnable command);线程池的操作方法都是定义子在Executor...转载 2019-03-29 14:23:05 · 876 阅读 · 0 评论
分享