上一页 1 2 3 4 5 6 7 8 ··· 114 下一页
摘要: 线程池中的几个重要概念: 1.核心线程(corePool):线程池最终执行任务的角色肯定还是线程,同时我们也会限制线程的数量,所以我们可以这样理解核心线程,有新任务提交时,首先检查核心线程数,如果核心线程都在工作,而且数量也已经达到最大核心线程数,则不会继续新建核心线程,而会将任务放入等待队列。 2 阅读全文
posted @ 2021-11-18 08:30 Sempron2800+ 阅读(143) 评论(0) 推荐(0) 编辑
摘要: java创新线程需要占用大量资源,需要JVM和操作系统配合完成大量工作。 1.必须为线程分配和初始化大量内存,其中包含至少1MB的栈内存。 2.需要进行系统调用,以便在OS中创建和注册本地线程。 Java高并发应用频繁创建和销毁线程的操作是非常低效的,而且是不被编程规范所允许的。 线程池可以降低ja 阅读全文
posted @ 2021-11-18 08:15 Sempron2800+ 阅读(75) 评论(0) 推荐(0) 编辑
摘要: Java中线程分为两类:User Thread(用户线程)、Daemon Thread(守护线程)。 只要当前JVM实例中存在任何一个用户线程没有结束,那全部守护线程就可以存留。 当全部的用户线程都结束工作的时候,守护线程会随着JVM一同停止工作。 注意: 1.thread.setDaemon(tr 阅读全文
posted @ 2021-11-18 08:08 Sempron2800+ 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 死锁发生的四个必要条件: 1.互斥条件,同一时间只能有一个线程获取资源。 2.不可剥夺条件,一个线程已经占有的资源,在释放之前不会被其他线程抢占。 3.请求和保持条件,线程等待过程中不会释放已占有的资源。 4.循环等待条件,多个线程互相等待对方释放资源。 死锁的预防,就是要打破这四个必要条件: 1. 阅读全文
posted @ 2021-11-18 07:58 Sempron2800+ 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 一线程活跃问题 1.线程安全的活跃性问题可以分为:死锁、活锁、饥饿。 活锁:有时线程虽然没有发生阻塞,但是仍然会存在执行不下去的情况,活锁不会阻塞线程,线程会一直重复执行某个相同的操作,并且一直失败重试。 出现的场景:异步消息队列有可能出现活锁问题,在消息队列的消费端如果没有正确的ack消息,并且执 阅读全文
posted @ 2021-11-17 18:32 Sempron2800+ 阅读(213) 评论(0) 推荐(0) 编辑
摘要: Java的线程有6种状态,它们定义在java.lang.Thread.State类中。 (1)NEW状态 是指线程刚创建, 尚未启动 (2)RUNNABLE状态(ready和running) 是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待 阅读全文
posted @ 2021-11-17 17:08 Sempron2800+ 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 创建线程的四种方式 (1)继承Thread类 (2)实现Runnable接口 (3)实现Callable接口 (4)使用线程池 1 package com.example.concurrency; 2 3 import java.util.concurrent.Callable; 4 import 阅读全文
posted @ 2021-11-17 16:59 Sempron2800+ 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 1.CPU密集型程序,一个完整请求,I/O操作可以在很短时间内完成,CPU还有很多运算要处理,也就是说CPU计算的比例占很大一部分,线程等待时间接近0。 单核CPU处理CPU密集型程序,不太适合使用多线程。 多核CPU理论上线程是数量为CPU(逻辑)核心数,但实际上,设置为CPU(逻辑)核心数+1。 阅读全文
posted @ 2021-11-17 16:38 Sempron2800+ 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 在代码种加入volatile关键字时,生成的汇编代码会出现一个locl前缀指令。 local前缀指令实际上相当于一个内存屏障,它有3个功能: 1.它确保指令重排序时不会把后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面。即在执行到内存屏障位置时,它前面的操作已全部完成。 2.它 阅读全文
posted @ 2021-11-17 07:33 Sempron2800+ 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 每个Thread都有一个ThreadLocal.ThreadLocalMap的map,该map的key为ThreadLocal实例,它为一个弱引用。 弱引用有利于GC回收。 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。 在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了 阅读全文
posted @ 2021-11-17 07:09 Sempron2800+ 阅读(158) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 114 下一页