
JAVA并发编程从入门到精通
xiao白跳大神
小白一枚,努力蜕变。。。。
展开
-
多线程之间的交互:线程阀
线程阀是一种线程与线程之间互相制约和交互的机制Queue,Deque,BlockingQueueQueue队列,先进先出;Deque双端队列;BlockingQueue当队列满时,存储元素的线程会等待队列非满,当队列为空时,读取元素的线程会等待队列非空。阻塞队列方法JDK已知阻塞队列数组阻塞队列java.util.concurrent.ArrayBlockingQue...原创 2019-07-13 11:07:44 · 206 阅读 · 0 评论 -
线程安全集合类
java.util.HashtableHashtable初始加载因子默认0.75,(加载因子是表示Hsah表中元素的填满的程度.若:加载因子越大,填满的元素越多,好处是,空间利用率高了,但:冲突的机会加大了.反之,加载因子越小,填满的元素越少,好处是:冲突的机会减小了,但:空间浪费多了.冲突的机会越大,则查找的成本越高.反之,查找的成本越小.因而,查找时间就越小.)key和value均不可...原创 2019-07-13 11:07:32 · 242 阅读 · 0 评论 -
Thread安全
线程模型数据读取的优先级是:寄存器-->告诉缓存-->内存线程读写数据:从主存中复制数据--》执行代码修改数据--》用修改的数据刷新主存中的数据实现线程安全几种方式:1.使用多例 2.使用类库中的安全类 3.使用锁机制锁机制a.隐式锁(synchronized)两种方式 1.在方法声明是加入 2.在代码块上面加入线程锁的效率(依次提高) pub...原创 2019-07-13 11:07:18 · 146 阅读 · 0 评论 -
JAVA中的Thread
线程实现的三种方式1:继承Thread2:实现Runable3:实现Callable<T>接口(可以获得执行结果)Thread中的属性和方法构造:方法:使用线程的注意事项开启线程最好给定线程名称,方便定位错误不要使用stop,suppose方法,已经过期main线程结束了,子线程可能还未结束线程中断机制1.调用Thread.st...原创 2019-07-13 11:07:11 · 188 阅读 · 0 评论 -
线程并发基础
CPU核心数,线程数32位/64位指的是位宽,32位一般只能支持4G运存。线程数一般情况下和CPU核心数为1:1的关系,超线程可达到1:2关系CPU时间轮换制度概念:在轮换时间内线程没有结束,则CPU线程已经结束,立即切换CPU轮换时间设定:太小CPU所用的切换时间变长,造成CPU资源浪费。太长导致人机交互变长,后面用户等待时间变长,一般设为100ms线程和进程进程是系...原创 2019-07-13 11:07:01 · 255 阅读 · 0 评论 -
Java内存结构
JVM线程结构程序计数器:一小块的内存区域,可以看做是当前线程执行字节码的行号指示器,为了确保线程切换之后恢复到上次执行的位置,每一个线程必须有一个独立的程序计数器。是线程的私有内存,是JVM中唯一没有规定任何内存溢出的内存区域。JVM栈虚拟机栈,线程私有,生命周期和线程相同。每个方法被调用是都会创建一个帧栈,用于存放局部变量,操作数栈,方法出口和动态链接等。局部变量空间是在编...原创 2019-07-13 11:08:30 · 134 阅读 · 0 评论 -
线程监控及其日常
线程监控实现线程监控需要继承ThreadPoolExecutor类,并实现以下方法public class MyThreadPoolLister extends ThreadPoolExecutor { public ForkJoinTest(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit un...原创 2019-07-13 11:08:21 · 246 阅读 · 0 评论 -
线程池
在实际工作中,线程的创建与销毁都会占用系统资源,因此可以考虑使用线程池。java.util.concurrent.ExecutorsnewSingleThreadExecutor:创建一个只有一个线程的线程池,如果唯一的线程因异常结束,会有新的线程来替代它。底层是根据ThreadPoolExecutor创建一个LinkedBlockingQueue大小的线程池。newCachedThr...原创 2019-07-13 11:08:01 · 120 阅读 · 0 评论 -
Fork/Join机制
化繁为简,分而治之,采用递归Future机制和FutureTask可以获取到线程执行的结果,可以中断线程,可以判断任务是否完成。Fork/Join机制将任务切割成足够小,最后将结果汇总。fork决定了ForkJoinTask异步执行,Join任务间结果的汇总。使用Fork/Join类(1)继承ForkJoinTask的子类,重写compone 方法,RecursiveA...原创 2019-07-13 11:08:10 · 274 阅读 · 0 评论 -
线程池简单使用
下面会写出几种线程池应用的示例1.直接使用java提供的线程池类class test{ public static void test_1() throws InterruptedException, ExecutionException{ //参数是线程的数量 ScheduledExecutorService scheduledExec...原创 2019-07-20 09:53:59 · 217 阅读 · 0 评论