线程

  • 线程与进程的区别
    1, 进程是一个可以独立执行的单元,一个进程就是一个应用程序;而线程则是进程中一个任务的执行单元。线程是进程的子集。
    2, 进程拥有独立的内存地址,而线程则是共享一块连续的内存。

  • 线程的实现有哪些方式,哪种方式更好
    1, 继承Thread类
    2, 实现Runable接口
    由于java不支持多继承,支持多实现。故实现runable接口相对来说更好。

  • 线程的start、run 方法的区别 ;wait 、sleep 、notify 、join 、yeild 分别是什么
    1, 线程的start方法是开启一个新线程,而run方法则和普通的方法一样执行,不能开启一个新线程。
    2, wait 方法可以让当前线程暂停执行,并且是放弃对象锁的。当调用notify方法后使得当前线程进入等锁池;sleep方法可以让当前线程休眠一定的时间,只是并不释放掉对象锁,当休眠时间到了,立即转入到就绪状态;notify方法是随机选择一个在当前对象上执行wait方法的线程,解除其阻塞状态。(ps:当前线程必须是锁的持有者)
    3, join方法让调用该方法的thread完成run方法里面的内容执行完毕,再去执行join后面的代码段;yeild方法线程放弃运行,将cpu的控制权让出来。它与sleep的不同之处在:它让出控制权之后,可能由于优先级较高会马上再次获得执行机会,进而接着运行。而sleep则是在指定的时间之内一定不会再次获得cpu执行权,必须等到休眠时间完成。

  • 线程调度策略
    抢占式调度策略
    时间片轮转调度策略

  • 多线程
    好处:1, 降低创建销毁线程的资源消耗 2, 提高响应速度 3, 提高线程的可管理性
    概念:线程池的顶级接口是Executor,真正的线程池接口是ExecutorService,它的具体实现的ThreadPoolExecutor。普通类Executors里面调用的就是ThreadPoolExecutor。
    创建一个线程池:ExecutorService pool = Executors.newCachedThreadPool();

    Executors提供四种线程池:
    1,newCachedThreadPool,可根据需要创建新线程的线程池
    2,newSingleThreadPool,只有一个线程的线程池
    3,newFixedThreadPool,固定大小的线程池
    4,newScheduledThreadPool,大小无限的线程池

    线程池相关参数:

public ThreadPoolExecutor(int corePoolSize,
                         int maximumPoolSize,
                         long keepAliveTime,
                         TimeUnit unit,
                         BlockingQueue<Runnable> workQueue,
                         ThreadFactory threadFactory) {
   this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, 
       threadFactory, defaultHandler);
}

1,corePoolSize 线程池的核心线程数,一般情况下,不管有没有任务都会在线程池中存在
2, maximumPoolSize 最大线程数量,当活动的线程数达到这个数字后,后面的任务将会被阻塞。
3, keepAliveTIme 控制闲置线程存活时间,一般用在非核心线程。
4, unit 指定keepAliveTime的时间单位,是枚举类型,主要有 TimeUnit.HOURS、TimeUnit.MINUTES
5, workQueue 线程池的任务队列
6, threadFacory 线程工厂,它是一个接口,用来为线程池创建新的线程

线程池的关闭:shutdown ,不会立即终止线程池,而是要等到任务缓存队列中的任务都执行完毕才终止,不会接受新的任务。shutdownNow,立即关闭线程池,并尝试打断正在执行的任务,清空缓存队列,返回未执行的任务。

Executor框架:是一个根据一组执行策略调度、执行、控制异步任务的框架。
Executors类:用于方便的创建线程池。

  • 线程池工作原则
    1、当线程池中线程数量小于 corePoolSize 则创建线程,并处理请求。
    2、当线程池中线程数量大于等于 corePoolSize 时,则把请求放入 workQueue 中,随着线程池中的核心线程们不断执行任务,只要线程池中有空闲的核心线程,线程池就从 workQueue 中取任务并处理。
    3 、当 workQueue 已存满,放不下新任务时则新建非核心线程入池,并处理请求直到线程数目达到 maximumPoolSize(最大线程数量设置值)。
    4、如果线程池中线程数大于 maximumPoolSize 则使用 RejectedExecutionHandler 来进行任务拒绝处理。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容

  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    小徐andorid阅读 2,803评论 3 53
  • 【JAVA 线程】 线程 进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者...
    Rtia阅读 2,764评论 2 20
  • 下面是我自己收集整理的Java线程相关的面试题,可以用它来好好准备面试。 参考文档:-《Java核心技术 卷一》-...
    阿呆变Geek阅读 14,797评论 14 507
  • 1.注册方式: 3.新增方法 4.配置问题 iOS的推送注册方式与之前有所不同,UNUserNotificatio...
    寒咯阅读 213评论 0 0
  • You need to return 0 if the two elements are equal, a neg...
    成江阅读 126评论 0 0