Java并发编程
高并发原理及实践
Howareyou?
这个作者很懒,什么都没留下…
展开
-
Java并发编程——线程池
使用原因创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变 长,而且一个进程能创建的线程数有限。为了避免这些问题,在程序启动的时候 就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。从 JDK1.5 开始,Java API 提供了 Executor 框架让你可以创建不同的线程池。Executor框架Executor框架包括3大部分:任务。也就是工作单元...原创 2020-04-30 01:44:31 · 225 阅读 · 0 评论 -
Java并发编程——ReentrantLock
简介ReentantLock 继承接口 Lock 并实现了接口中定义的方法,他是一种可重入锁,除了能完 成 synchronized 所能完成的所有工作外,还提供了诸如可响应中断锁、可轮询锁请求、定时锁等 避免多线程死锁的方法。Lock接口void lock()执行此方法时, 如果锁处于空闲状态, 当前线程将获取到锁. 相反, 如果锁已经 被其他线程持有, 将禁用当前线程, 直到当前线程...原创 2020-04-28 23:37:39 · 177 阅读 · 0 评论 -
Java并发编程——Synchronized
原理这篇大佬的讲的还是比较详细了:深入理解Java并发之synchronized实现原理然后记住几幅图:原创 2020-04-26 14:14:02 · 150 阅读 · 0 评论 -
Java并发编程——线程常用方法
方法名static功能说明注意start()启动一个新线 程,在新的线程 运行 run 方法 中的代码start 方法只是让线程进入就绪,里面代码不一定立刻 运行(CPU 的时间片还没分给它)。每个线程对象的 start方法只能调用一次,如果调用了多次会出现 IllegalThreadStateExceptionrun()新线程启动后会 调用的方法如果在构...原创 2020-04-22 22:51:52 · 131 阅读 · 0 评论 -
Java并发编程——线程创建
法一:直接通过ThreadThread t = new Thread(){ @Override public void run() { log.debug("running"); } };t.setName("t1");t.start();法二:使用Runnable接口...原创 2020-04-22 21:59:41 · 124 阅读 · 0 评论 -
Java并发编程——进程与线程
进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的 。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(...原创 2020-04-22 20:30:12 · 180 阅读 · 0 评论 -
Java并发编程——Java线程内存模型JMM
原理大佬的讲解,基础知识还是蛮清楚的,但是对原子性那块讲的不是很透彻:深入理解Java内存模型可见性在多处理器下,为了保证各个处理器的缓存是一致的,就会实现缓存一致性协议,每个处理器通过嗅探在总线上传播的数据来检查自己缓存的值是不是过期了,当处理器发现自己缓存行对应的内存地址被修改,就会将当前处理器的缓存行设置成无效状态,当处理器对这个数据进行修改操作的时候,会重新从系统内存中把数据读...原创 2020-04-22 17:40:27 · 155 阅读 · 0 评论