随笔分类 -  Multi_Thread多线程

Multi_Thread 多线程
摘要:阿里的面试官问了个问题,如果corePolllSize=10,MaxPollSize=20,如果来了25个线程 怎么办, 先 达到 corePoolSize,然后 优先放入队列,然后在到MaxPollSize;然后拒绝; 答案: 当线程数小于corePoolSize时,提交一个任务创建一个线程(即使 阅读全文
posted @ 2018-03-23 10:32 aspirant 阅读(9223) 评论(0) 推荐(2) 编辑
摘要:聊聊并发(七)——Java中的阻塞队列 原文首发于InfoQ 1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景, 阅读全文
posted @ 2018-03-23 10:25 aspirant 阅读(1673) 评论(0) 推荐(0) 编辑
摘要:一、后台线程(守护线程) 学一个东西,最重要的一点就是,为什么要用它? 后台线程区别于普通线程,普通线程又可以称为用户线程,只完成用户自己想要完成的任务,不提供公共服务。而有时,我们希望编写一段程序,能够提供公共的服务,保证所有用户针对该线程的请求都能有响应。 仔细来看下后台线程的定义:指在程序运行 阅读全文
posted @ 2018-03-23 10:01 aspirant 阅读(773) 评论(0) 推荐(0) 编辑
摘要:概要 现代的计算机已经向多CPU方向发展,即使是普通的PC,甚至现在的智能手机、多核处理器已被广泛应用。在未来,处理器的核心数将会发展的越来越多。虽然硬件上的多核CPU已经十分成熟,但是很多应用程序并未这种多核CPU做好准备,因此并不能很好地利用多核CPU的性能优势。为了充分利用多CPU、多核CPU 阅读全文
posted @ 2018-03-22 11:38 aspirant 阅读(1673) 评论(0) 推荐(0) 编辑
摘要:用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。 很多人都对其中的一些概念不 阅读全文
posted @ 2017-07-22 18:20 aspirant 阅读(3060) 评论(0) 推荐(0) 编辑
摘要:Java多线程实现方式主要有三种:继承Thread类、实现Runnable接 口、使用ExecutorService、Callable 实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种Callable是带返回值的,返回结果可以从Future中取出来 关于ExecutorS 阅读全文
posted @ 2017-07-22 17:25 aspirant 阅读(7391) 评论(0) 推荐(1) 编辑
摘要:阿里面试官问我这个问题,我仔细总结了一下: 参考:sleep、yield、wait、join的区别(阿里面试) 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: 假设现在是 2008-4-7 12:00:00.000 阅读全文
posted @ 2017-07-05 15:03 aspirant 阅读(7691) 评论(0) 推荐(0) 编辑
摘要:前几天复习了一下多线程,发现有许多网上讲的都很抽象,所以,自己把网上的一些案例总结了一下! 一. Thread.yield( )方法: 使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定 阅读全文
posted @ 2017-06-28 15:03 aspirant 阅读(1129) 评论(0) 推荐(0) 编辑
摘要:阿里面试官问我这个问题,我仔细总结了一下: 参考:sleep、yield、wait、join的区别(阿里面试) 如何线程执行running结束的话,会进入yield状态; 1. join()介绍 join() 定义在Thread.java中。join() 的作用:让“主线程”等待“子线程”结束之后才 阅读全文
posted @ 2017-06-28 14:33 aspirant 阅读(538) 评论(0) 推荐(0) 编辑
摘要:1、什么是CAS? CAS:Compare and Swap,即比较再交换。 jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是 阅读全文
posted @ 2017-06-26 15:00 aspirant 阅读(2954) 评论(0) 推荐(0) 编辑
摘要:volatile 与 synchronized 的比较(阿里面试官问的问题) ①volatile轻量级,只能修饰变量。synchronized重量级,还可修饰方法 ②volatile只能保证数据的可见性,不能用来同步,因为多个线程并发访问volatile修饰的变量不会阻塞。 synchronized 阅读全文
posted @ 2017-06-26 13:58 aspirant 阅读(1317) 评论(0) 推荐(1) 编辑
摘要:实现多线程的三种方式,继承Thread,实现Runnable 和 实现 Executor接口 ,具体参考:Java 多线程 三种实现方式 去美团,问到了什么是线程池,如何使用,为什么要用,以下做个总结 1、什么是线程池: java.util.concurrent.Executors提供了一个 jav 阅读全文
posted @ 2017-05-30 14:43 aspirant 阅读(66108) 评论(0) 推荐(8) 编辑