线程
奋斗中的老青年
可关注公众号 代码小搬运
展开
-
Java线程状态
线程状态:NEW:当使用new Thread()创建一个新的线程,又还没有开始执行它的时候就处于NEW状态;RUNNABLE:当线程执行start之后,线程进入RUNNABLE状态,之后还可能会继续转换成其它状态;BLOCKED:等待执行锁;WAITING:无限期等待另外线程唤醒,即等待其它线程执行notify或notifyAll;TIMED_WAITING:限时等待另外线程唤醒;T...原创 2019-07-29 09:33:17 · 102 阅读 · 0 评论 -
线程通信之join方法
join方法就是挂起调用线程,直到被调用线程执行完毕后再继续执行。例:threadB线程中threadA的join方法,所以threadB需在threadA执行完毕后才继续执行join后的代码,而主线程执行threadB.join(),所以最终主线程需等threadA和threadB执行完毕后才继续。@Slf4jpublic class JoinThread { public sta...原创 2019-07-30 08:54:44 · 145 阅读 · 0 评论 -
线程池及Spring Boot举例
创建线程池:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)corePoolSize:线程池的基本大小m...原创 2019-07-26 08:51:09 · 245 阅读 · 0 评论 -
volatile 共享内存
volatile原理:Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。在访问vola...原创 2019-08-05 08:53:42 · 580 阅读 · 0 评论 -
CountDownLatch倒计数器并发工具
CountDownLatch:用于多线程并行执行例:@Slf4jpublic class CountDownLatchDemo { private static volatile int index = 0; public static void main(String[] args) throws InterruptedException { //创建倒...原创 2019-08-06 08:41:29 · 180 阅读 · 0 评论 -
线程通信之等待通知机制
等待通知机制模式是java中比较经典的线程通信方式,两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。例:两个线程从集合中获取数据@Slf4jpublic class ThreadWaitNotify { private static final List<Integer> list = Lists.newArrayList(2, ...原创 2019-08-02 08:26:10 · 198 阅读 · 0 评论 -
线程响应中断
首先介绍下Thread的两个方法:interrupt():设置当前中断标记为trueisInterrupted():检查线程的中断标记@Slf4jpublic class StopThread implements Runnable { public static void main(String[] args) throws InterruptedException { ...原创 2019-08-19 08:44:50 · 1931 阅读 · 0 评论 -
CyclicBarrier实现线程通信
CyclicBarrier:从字面上的意思可以知道,这个类的中文意思是“循环栅栏”。大概的意思就是一个可循环利用的屏障。一个线程组的线程需等到所有线程完成后才继续下一步。例:CyclicBarrier(int parties):parties指定线程数public static void main(String[] args) throws InterruptedException {...原创 2019-08-12 08:25:33 · 146 阅读 · 0 评论 -
管道通信
PipedWriter:字符管道输出流,它继承于WriterPipedReader:字符管道输入流,它继承于WriterPipedInputStream:字节管道输入流,继承于InputStreamPipedOutputStream:字节管道输出流,继承于OutputStreamPipedWriter和PipedReader的作用是可以通过管道进行线程间的通讯。在使用管道通信时,必须将P...原创 2019-08-26 08:51:56 · 506 阅读 · 0 评论