
Java多线程
ouyangjun__
这个作者很懒,什么都没留下…
展开
-
Java 多线程 返回值
一)背景该案例主要是结合多线程、ThreadPoolExecutor线程池实现的一个有返回值的多线程功能。二)第一个线程类创建一个ListThread线程类,继承java.util.concurrent.Callable接口,并指定方法具体的返回值类型。实现源码:package com.oysept.thread;import java.util.List;imp...原创 2020-03-21 14:50:18 · 3280 阅读 · 3 评论 -
Java多线程-Callable和Future
一)Callable和Future简介1、Callable简介Callable是一个函数式接口,它只包含一个call()方法,并支持泛型。Callable是一个返回结果并且可能抛出异常的任务。package java.util.concurrent;@FunctionalInterfacepublic interface Callable<V> { V ca...原创 2020-01-15 20:35:20 · 277 阅读 · 0 评论 -
Java多线程-四种线程池创建方式
一)线程池简介1、减少线程的频繁创建、销毁。2、可有效的使用和管理线程,提升资源重复使用率,避免资源不足引起的一些问题。二)newFixedThreadPool原理:创建一个固定数量大小的线程池,当线程任务数超过固定大小时,未执行的线程任务进行阻塞队列,等待线程池调度。示例:import java.util.concurrent.ExecutorService;i...原创 2020-01-15 20:35:21 · 6325 阅读 · 1 评论 -
Java多线程-ThreadPoolExecutor拒绝策略
一)ThreadPoolExecutor拒绝策略1)ThreadPoolExecutor.AbortPolicy:当任务添加到线程池中被拒绝时,它将抛出 RejectedExecutionException异常。2)ThreadPoolExecutor.CallerRunsPolicy:当任务添加到线程池中被拒绝时,会在线程池当前正在运行的Thread线程池中处理被拒绝的任务。3)Th...原创 2020-01-08 21:30:11 · 1165 阅读 · 1 评论 -
Java多线程-ThreadPoolExecutor详解
一)ThreadPoolExecutor简介ThreadPoolExecutor是线程池具体实现类,继承了AbstractExecutorService抽象类。作用:多线程的频繁运行和释放,消耗的时间会比较久。线程池主要是用来存放一定数量线程的线程集合,当线程使用时,从线程池中分配一个空闲的线程来执行对应的程序,当超过线程池的固定容量时,会有一部分线程会处于等待状态。线程池通过相应的调度策...原创 2020-01-07 22:55:12 · 362 阅读 · 0 评论 -
Java多线程-线程池架构
一)线程池架构图Java多线程中线程池架构图如下:二)ExecutorExecutor是一个接口,接口中只有一个execute()方法。package java.util.concurrent;public interface Executor { void execute(Runnable command);}Executor接口提供execute(...原创 2020-01-06 21:55:37 · 476 阅读 · 1 评论 -
Java多线程-yield()线程让步
一)yield()简介static voidyield():使当前正在运行的线程对象暂停,并执行其它线程。线程让步:调用Thread.yield()方法时,暂停当前正在运行的线程对象,并执行其它相同或优先级别更高的线程。使用目的:使用yield()方法目的是让具体相同优先级别的线程轮询执行,但实际中无法保证yield达到让步的目的,因为让步的线程可能再次被线程调度器选中继续运...原创 2019-12-22 11:50:17 · 1062 阅读 · 0 评论 -
Java多线程-join()线程加入
一)join()简介void join():等待这个线程终止。void join(long millis):等待这个线程终止最多 millis毫秒。void join(long millis, int nanos):等待最多 millis毫秒加上 nanos纳秒这个线程终止。线程终止:该线程终止指的是主线程等待子线程的终止。也就是说子线程调用了join()方法时,该方法后面的...原创 2019-12-22 11:30:09 · 225 阅读 · 0 评论 -
Java多线程-sleep()线程休眠
一)sleep()简介static voidsleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。static voidsleep(long millis, int nanos):使正在执行的线程以指定的毫秒数加上指定的纳秒数来暂停(临时停止执行),具体取决于系统定时器和调度器的精度和准确性。...原创 2019-12-22 10:55:22 · 5713 阅读 · 0 评论 -
Java多线程-synchronized关键字
一)synchronized关键字简介synchronized:Java语言中的关键字,可用来给对象、方法或代码块加锁,当它锁定一个对象、一个方法或一个代码块的时,同一时刻最多只能有一个线程执行这段代码。1)对象加锁:当对象加锁时,其它别的线程在该类所有对象上的任何操作都不能进行,需要等待该对象释放才能执行。// 方式一: 当前对象加锁public void currentObje...原创 2019-12-21 21:30:58 · 148 阅读 · 0 评论 -
Java多线程-start()和run()方法的区别
一)start()和run()方法简介run():是Thread中一个普通成员方法,可多次调用,调用该方法不会启动一个新线程。private Runnable target;@Overridepublic void run() { if (target != null) { target.run(); }}start():是Thread中...原创 2019-12-21 19:25:17 · 715 阅读 · 0 评论 -
Java多线程-三种多线程实现方式
一)继承Runnable接口Runnable接口简介:@FunctionalInterfacepublic interface Runnable { public abstract void run();}@FunctionalInterface:函数式接口,有以下几个特点。1)接口中有且仅有一个抽象方法。2)可允许定义静态方法和默认方法。3)允许java.l...原创 2019-12-21 18:05:12 · 348 阅读 · 0 评论 -
Java多线程-wait()、notify()、notifyAll()线程等待与线程唤醒
一)wait()、notify()、notifyAll()简介void wait():使该线程处于等待状态。void wait(long timeout):指定该线程等待的时间,以毫秒为单位。void wait(long timeout, int nanos):指定该线程等待的时间,以毫秒+纳秒为单位。void notify():唤醒正在等待对象监视器的单个线程。如果有多个线程,随...原创 2019-12-19 22:55:14 · 497 阅读 · 0 评论 -
Java多线程-简介
一)多线程简介进程:进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。每一个进程可以包含多个线程。线程:线程是程序中一个单一...原创 2019-12-18 23:20:29 · 175 阅读 · 0 评论