摘要: 线程的安全问题体现在: 原子性:一个或多个操作在CPU执行过程中不被中断的特性 可见性:一个线程对共享变量的修改,另一个线程能立刻看到 有序性:程序执行的顺序按照代码的先后顺序执行 导致线程存在安全问题的原因: 缓存导致可见性问题 线程切换导致原子性问题 编译优化导致的有序性问题 java给出的解决 阅读全文
posted @ 2019-11-18 20:04 莫等、闲 阅读(2216) 评论(0) 推荐(0) 编辑
摘要: Java中的线程池在进行任务提交时,有两种方式:execute和submit方法。 一、execute和submit的区别 execute只能提交Runnable类型的任务,无返回值。submit既可以提交Runnable类型的任务,也可以提交Callable类型的任务,会有一个类型为Future的 阅读全文
posted @ 2019-11-18 16:19 莫等、闲 阅读(23274) 评论(1) 推荐(3) 编辑
摘要: 线程池的生命周期,总共有五种状态 RUNNING :能接受新提交的任务,并且也能处理阻塞队列中的任务; SHUTDOWN:关闭状态,不再接受新提交的任务,但却可以继续处理阻塞队列中已保存的任务。在线程池处于 RUNNING 状态时,调用 shutdown()方法会使线程池进入到该状态。(finali 阅读全文
posted @ 2019-10-28 14:15 莫等、闲 阅读(3788) 评论(0) 推荐(0) 编辑
摘要: java中创建线程池的方式一般有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue 阅读全文
posted @ 2019-10-11 17:36 莫等、闲 阅读(67080) 评论(0) 推荐(1) 编辑
摘要: sleep()和wait()的区别? 这两个方法来自不同的类分别是Thread和Object sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用 阅读全文
posted @ 2019-10-11 11:20 莫等、闲 阅读(820) 评论(0) 推荐(0) 编辑
摘要: 图中显示线程有5种状态,但严格意义上讲应该有7种: 新建状态:当用new操作符创建一个线程后, 例如new Thread(r),此时线程处在新建状态。 当一个线程处于新建状态时,线程中的任务代码还没开始运行。 就绪状态:也被称为“可执行状态”。一个新创建的线程并不自动开始运行,要执行线程,必须调用线 阅读全文
posted @ 2019-10-11 10:33 莫等、闲 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 1.通过实现Runnable接口创建线程 2.通过实现callable接口创建线程 3.通过集成Thread类创建线程 4.使用Executor框架来创建线程池 在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机 阅读全文
posted @ 2019-10-10 11:26 莫等、闲 阅读(1518) 评论(0) 推荐(0) 编辑
摘要: 什么是守护线程? 守护线程的唯一用途 是为其他线程提供服务。计时线程就是一个例子,它定时地发送“ 计时器嘀嗒” 信号给其他 线程或清空过时的高速缓存项的线程。当只剩下守护线程时, 虚拟机就退出了,由于如果只 剩下守护线程, 就没必要继续运行程序了。 守护线程有时会被初学者错误地使用, 他们不打算考虑 阅读全文
posted @ 2019-10-10 10:06 莫等、闲 阅读(2260) 评论(0) 推荐(0) 编辑
摘要: 并行与并发的区别? 假设一个有三个学生需要辅导作业,帮每个学生辅导完作业是一个任务 顺序执行:老师甲先帮学生A辅导,辅导完之后再取给B辅导,最后再去给C辅导,效率低下 ,很久才完成三个任务 并发:老师甲先给学生A去讲思路,A听懂了自己书写过程并且检查,而甲老师在这期间直接去给B讲思路,讲完思路再去给 阅读全文
posted @ 2019-10-09 19:53 莫等、闲 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-10-08 16:39 莫等、闲 阅读(386) 评论(1) 推荐(0) 编辑