
√ 深入理解多线程与并发
hello-java-maker
为了我们,做最好的自己
展开
-
java并发编程基础系列(五): 创建线程的四种方式
线程的创建一共有四种方式:继承于Thread类,重写run()方法;实现Runable接口,实现里面的run()方法;使用 FutureTask 实现有返回结果的线程使用ExecutorService、Executors 线程池。 在详细了解这四种方法之前,先来理解一下为什么线程要这样创建:形象点来说,Thread是一个工人,run()方法里面的便是他的任务栏,这个任务栏默认是空...转载 2018-05-09 17:06:00 · 1193 阅读 · 1 评论 -
并发基础篇(六):线程Thread类的start()方法和run()方法
一、初识java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。 ...原创 2018-05-26 08:11:36 · 37930 阅读 · 5 评论 -
并发基础(七):Thread 类的sleep()、yeild()、join()
1、Thread.sleep(long millis )sleep( )是一个静态方法,让当前正在执行的线程休眠(暂停执行),而且在睡眠的过程是不释放资源的,保持着锁。 在睡眠的过程,可以被中断,注意抛出InterruptedException异常;作用:1、暂停当前线程一段时间; 2、让出CPU,特别是不想让高优先级的线程让出CPU给低优先级的线程try { ...转载 2018-07-24 23:26:01 · 457 阅读 · 0 评论 -
并发基础(八) java线程的中断机制
1. 引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。如果对Java中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此。中断机制是如何工作的?捕获或检测到中断后,是抛出Inte...转载 2018-07-24 23:34:35 · 266 阅读 · 0 评论 -
并发基础(九) java线程的终止与中断
1、简单了解一下:为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume? suspend 、resume、stop方法分别完成了线程的暂停、恢复、终止的工作。不建议使用原因:是因为这三个方法带来的副作用,如suspend( )方法,调用后,线程就会一直占用资源睡眠,直到调用resume( )恢复后,才可以运行。这样很容易引发死锁。同样,stop...转载 2018-07-24 23:40:36 · 221 阅读 · 0 评论 -
并发基础(十) 线程局部副本ThreadLocal之正解
什么是ThreadLocalThreadLocal是线程局部变量,所谓的线程局部变量,就是仅仅只能被本线程访问,不能在线程之间进行共享访问的变量。在各个Java web的各种框架中ThreadLocal几乎已经被用烂了,spring中有使用,mybatis中也有使用,hibernate中也有使用,甚至我们写个分页也用ThreadLocal来传递参数……这也从侧面说明了ThreadLocal十分...转载 2018-07-25 00:21:01 · 578 阅读 · 0 评论 -
高并发之并发容器详解(从入门到超神)
一、ConcurrentHashMap在上面已经提到过ConcurrentHashMap,ConcurrentHashMap相比Hashtable能够进一步提高并发性,其原理图如下:HashMap,Hashtable与ConcurrentHashMap都是实现的哈希表数据结构,在随机读取的时候效率很高。Hashtable实现同步是利用synchronized关键字进行锁定的,其是针对整张哈希...原创 2018-09-20 15:24:48 · 989 阅读 · 0 评论 -
Java线程池原理及使用
java中的线程池是运用场景最多的并发框架。在开发过程中,合理的使用线程池能够带来下面的一些好处:1、降低资源的消耗。2、提高响应速度。3、提高线程的可管理型。1.1、线程池ThreadPoolExecutor工作原理讲解之前,我们先看一张原理图ThreadPoolExecutor执行execute方法有4种情况:1)如果当前运行的线程少于corePoolSize,则创建新的线程来...原创 2018-09-27 17:10:08 · 12386 阅读 · 4 评论