多线程
凡尘炼心
谨于言慎于行
展开
-
关于多线程的知识点-02
什么是并发?什么是并行?并发:同一时间段,多个任务都在执行(单位时间内不一定能同时执行); 并行:单位时间内多个人任务同时执行;为什么要使用多线程?计算机原理来讲:我们知道线程是进程下的最小的执行单位,线程间的切换和调度成本要比进程小得多,另外现在的电脑都是多cpu配置,那么就可以同时运行多个线程,减少了线程间上下文的切换,从而降低了进程运行的开销 现在互联网的发展趋势,现在的系统需求的并发量在不断的提升,多线程这块对高并发系统来说说基础的一部分,处置好多线程可以大大提高系统的心能和整体的并发原创 2020-08-03 00:11:37 · 184 阅读 · 0 评论 -
[java进阶]关于多线程的知识点
线程和进程的区别?进程: 是程序得一次之星过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序就是从一个进程的创建开始,到进程的结束的过程。 在java中当我们的main函数运行时就是启动了一个JVM进程,而main函数所在的线程就是进程中的一个线程,也称为主线程。 线程: 是比进程更小得执行单位,一个进程在执行过程中可以产生很多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程都有自己的程序计数器,虚拟机栈和本地方法栈。系统在产生一个线程或在各个线程原创 2020-07-21 23:42:25 · 156 阅读 · 0 评论 -
线程池原理?为什么要用线程池?线程池的创建方式?
为什么要使用线程池在面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是对一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因。比如...原创 2019-05-27 22:36:17 · 4531 阅读 · 0 评论 -
线程的生命周期?什么时候会出现僵死进程?
线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:新建(new Thread)当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。例如:Thread t1=new Thread();就绪(runnable)调用Thread类的start方法,线程已经被启动,进入就绪状态,正在等待被分配给CPU时间片,也就是...原创 2019-05-27 22:52:46 · 6293 阅读 · 0 评论 -
什么是线程安全?如何保证线程安全?
什么是线程安全参考:《Java并发编程实践》中对线程安全的定义:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。《深入理解Java虚拟机》的作者也认可这个观点。本人也认为这是一个恰当的定义,因为线程安全的主体是什么?是方法还是代码块...原创 2019-05-27 23:22:44 · 44383 阅读 · 2 评论 -
volatile、ThreadLocal的使用场景和原理
并发编程中的三个概念原子性一个或多个操作。要么全部执行完成并且执行过程不会被打断,要么不执行。最常见的例子:i++/i--操作。不是原子性操作,如果不做好同步性就容易造成线程安全问题。可见性多个线程访问同一个变量,一个线程改变了这个变量的值,其他线程可以立即看到修改的值。可见性的问题,有两种方式保证。一是volatile关键字,二是通过synchronized和lock。详细在后面...原创 2019-05-30 23:07:16 · 6779 阅读 · 1 评论 -
线程核心参数? 如何合理配置线程池参数?
线程池的核心参数corePoolSize(核心线程数)(1)核心线程会一直存在,即使没有任务执行; (2)当线程数小于核心线程数的时候,即使有空闲线程,也会一直创建线程直到达到核心线程数;(3)设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭。queueCapacity(任务队列容量)也叫阻塞队列,当核心线程都在运行,此时再...原创 2019-05-29 23:34:02 · 9296 阅读 · 6 评论