本文开始将开始介绍 Java 多线程与并发相关的知识,多谢各位一直以来的关注与支持.关注我的公众号「Java面典」了解更多 Java 相关知识点. 线程的创建方式 在 Java 中,用户常用的主动创建线程的方式有三种,分别是 继承 Thread 类.实现 Runnable 接口 .通过Callable 和 Future. 继承 Thread 类 定义 Thread 类的子类,并重写该类的 run 方法: 调用线程对象的 start() 方法来启动该线程. 通过继承 Thread 实现的线程类,多…
在上一章,为大家介绍了线程的一些基础知识,线程的创建与终止.本期将为各位带来线程的生命周期与常用方法.关注我的公众号「Java面典」了解更多 Java 相关知识点. 线程生命周期 一个线程不是被创建了马上就开始执行,也不是一直处于执行状态.在线程的整个生命周期中会经历新建(New). 就绪(Runnable).运行(Running).阻塞(Blocked)和销毁(Terminated)5 种状态. 新建 指使用 new 关键字创建一个新的线程对象后,该线程就处于新建状态.此时仅由 JVM 为其分…
在前两篇文章中,我们已经了解了关于线程的创建与常用方法等相关知识.接下来就来了解下,当你运行线程时,线程是如何调度的.关注我的公众号「Java面典」了解更多 Java 相关知识点. 多任务系统往往需要同时执行多道作业.作业数往往大于机器的 CPU 数,然而一颗 CPU 同时只能执行一项任务,如何让用户感觉这些任务正在同时进行呢? 操作系统的设计者 巧妙地利用了时间片轮转的方式. 线程上下文 对于单核 CPU 来说(对于多核 CPU,此处就理解为一个核),CPU 在一个时刻只能运行一个线程,当在运…
在此之前,我们已经了解了关于线程的基本知识,今天将为各位带来,线程池这一技术.关注我的公众号「Java面典」了解更多 Java 相关知识点. 为什么使用线程池?线程池做的工作主要是控制运行的线程的数量. 线程池的种类 Java 中常用的线程池主要有四种:newCachedThreadPool.newFixedThreadPool.newScheduledThreadPool.newSingleThreadExecutor. newCachedThreadPool 作用:创建一个可缓存线程池,如果…
在多线程或高并发情境中,经常会为了保证数据一致性,而引入锁机制,本文将为各位带来有关锁的基本概念讲解.关注我的公众号「Java面典」了解更多 Java 相关知识点. 根据锁的各种特性,可将锁分为以下几类: 乐观锁/悲观锁 独享锁(互斥锁)/共享锁(读写锁) 可重入锁 公平锁/非公平锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 乐观锁/悲观锁 乐观锁与悲观锁并不是特指某两种类型的锁,是人们定义出来的概念或思想,主要是指看待并发同步的角度. 乐观锁 前提:认为读多写少,遇到并发写的可能性低,每次去…
上一篇文章中,我们已经介绍过了各种锁,让各位对锁有了一定的了解.接下来将为各位介绍锁在Java中的实现.关注我的公众号「Java面典」了解更多 Java 相关知识点. 在 Java 中主要通过使用synchronized . volatile关键字,及 Lock 接口的子类 ReentrantLock 和 ReadWriteLock 等来实现加锁. synchronized 属性 synchronized 属于独占式的悲观锁,同时属于可重入锁. 作用 synchronized 可以把任意一个非…
在进行更近一步的了解Java锁的知识之前,我们需要先了解与锁有关的两个概念 CAS 与 AQS.关注我的公众号「Java面典」了解更多 Java 相关知识点. CAS(Compare And Swap/Set) 概念 CAS函数,是比较并交换函数,它是原子操作函数. 原理 CAS 是基于乐观锁的原理进行操作的.它总是认为自己可以成功完成操作.当多个线程同时使用 CAS 操作一个变量时,只有一个会胜出,并成功更新,其余均会失败.失败的线程不会被挂起,仅是被告知失败,并且允许再次尝试或放弃操作. 实…
前两篇文章中,为各位带来了,锁的类型及锁在Java中的实现.接下来本文将为各位带来锁在Java中的应用相关知识.关注我的公众号「Java面典」了解更多 Java 相关知识点. 锁在Java中主要应用还是在JUC(java.util.concurrent)包下的相关类,常用的主要有原子类.原子集合以及阻塞队列. 原子类(Atomicxxx) AtomicLong AtomicInteger.AtomicLong 和 AtomicBoolean 这3个基本类型的原子类的原理和用法相似. 作用 对 L…
 本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中 多线程 •进程: •正在运行的程序,是系统进行资源分配和调用的独立单位. •每一个进程都有它自己的内存空间和系统资源. •线程: •是进程中的单个顺序控制流,是一条执行路径 •一个进程如果只有一条执行路径,则称为单线程程序.…
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何创建线程 Java多线程(四)java中的Sleep方法 Java多线程(五)线程的生命周期 番外篇(神TM番外篇): Java 过一下基础 转载:java中Thread.sleep()函数使用 Java多线程 Socket使用 我觉得,一开始不能讲太多笼统的东西,一来不容易理解,二来先来个小小的上…