![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
浩水浮生
好看的皮囊千篇一律,有趣的灵魂万里挑一。
展开
-
StringBuilder 在多线程环境下不安全的原因
面试经常会问到,StringBuilder和StringBuffer的区别,大家都回答StringBuilder是线程不安全的,StringBuffer是线程安全的,那么StringBuilder到底是哪里不安全了呢?public class DemoUtil { public static void main(String[] args) throws Exception{ StringBuilder stringBuilder = new StringBuilder()..原创 2020-11-16 23:09:12 · 1491 阅读 · 0 评论 -
java并发编程之Fork/Join框架
Fork/Join是java提供的一个用于并行执行任务的框架,通过把一个大的任务分成若干个小任务,最后再把每个小任务的结果汇总得到这个大任务的结果。举个例子,比如你要计算1+2+3+4+5+6的和,可以把这个任务分为2个小任务,小任务1负责计算1+2+3的和,小任务2负责计算4+5+6的和,然后再把这2个小任务的和汇总就是1+2+3+4+5+6的和了。我们通过一个运行流程图来看下吧。...原创 2020-01-05 22:09:43 · 237 阅读 · 0 评论 -
java 线程池的原理及使用
在java并发编程中线程池是使用非常多的一个并发框架,通过合理的使用线程池可以降低资源的消耗,提高响应的速度以及提高线程的可管理性。那么线程池的实现原理是什么呢?我们通过一个新的任务的处理流程来说明线程池的原理,当提交一个新的任务到线程池时,线程池判断corePool中的线程是否都在执行任务,如果不是的话,就创建一个新的线程来执行这个任务,否则,就会判断BlockingQueue是否已满,...原创 2020-01-02 23:40:17 · 125 阅读 · 0 评论 -
java NIO的工作机制和原理
NIO 全称non-blocking IO,即同步非阻塞的IO。那么NIO与BIO有什么区别呢?BIO是同步阻塞IO,而NIO是同步非阻塞IO,也就是都是自己的工作自己来处理,但是NIO是非阻塞的,非阻塞IO就是当一件事没有完成时,也可以去做别的事情,不用非得等待这件事完成后才能去做别的事情,比如吃饭要排队,BIO就是必须排队吃完饭,再去做别的事情,NIO就是可以先去做别的事情,等会再回来吃饭。说...原创 2020-01-01 21:51:17 · 354 阅读 · 0 评论 -
java 并发编程之CAS与AQS
还有一个月就要过春节了,过完春节回来又到了一年一度的换工作的时间了,尤其是程序员只能靠跳槽来使工资保证能达到市场的平均水平,而在面试中CAS和AQS又是面试经常问到的问题,希望明年准备换工作的朋友们面试能够用的上。CAS:Compare And Swap 即比较替换的意思,在多线程并发中我们可以使用锁来保证线程的安全问题,但是使用锁机制也会导致性能问题,比如使用Synchornized就会引起...原创 2020-01-01 21:48:14 · 886 阅读 · 0 评论 -
java BIO的工作机制
在谈BIO之前先说明几个词语的语义,比如同步和异步,阻塞和非阻塞,那么这几个词什么意思呢?同步:同步就是按事情的既定顺序做事,有次序的工作。异步:异步就是做事没有顺序,只要完成就好。举个例子,比如你要吃饭然后去教室读书,同步就是你必须先吃饭,然后再去读书,异步就是你看到很多人在排队吃饭,你先去读书,排队人少了再过来吃饭,或者是一边读书,一边排队吃饭。那么什么是阻塞和非阻塞呢?再...原创 2019-12-26 23:25:37 · 210 阅读 · 0 评论 -
volatile关键字的用法
volatile关键字是在并发编程中使用频率非常高的一个关键字,那么volatile关键字到底有什么作用呢?根据官方的定义,volatile关键字主要有2个作用,保持变量在内存中的可见性和禁止指令重排序,下面就这2个用法进行详细的说明。一、保持变量在内存中的可见性 要理解这句话首先要明白线程是怎么工作的,jvm运行时会给变量分配一个内存,我们可以称之为主内存,每...原创 2019-12-22 20:36:39 · 964 阅读 · 0 评论 -
多线程你真的懂了吗?
今天写下多线程,多线程是个老生常谈的知识,一谈及多线程,很多人就会想起多线程的实现方式,实现Runnable接口,或是实现Thread类。但是为什么这么就可以实现多线程呢?我们通过代码来了解下吧!public class ConcurrencyTest { private static final long count = 10000; public static voi...原创 2019-10-31 23:32:14 · 106 阅读 · 0 评论 -
线程的使用
1.继承Thread ,通过构造函数传递数据。public class MyThread extends Thread{ private String name; private String age; public MyThread (String name,String age){ this.name = name; th...原创 2019-08-26 23:52:38 · 84 阅读 · 0 评论 -
java超时机制代码设计
转自:https://blog.csdn.net/dyccsxg/article/details/84464691package com.chongzi.keji.suanfa;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurr...转载 2019-07-18 22:54:20 · 721 阅读 · 0 评论