线程有关笔记

1.同步、异步
指的是方法的调用。执行了同步方法的调用后,调用者必须等待同步方法返回后,才可以继续后续的执行。
执行了异步方法的调用后,调用会立即返回,调用者可以继续执行后续操作。

2.进程和线程的区别
程序是指令集,静态概念
进程是操作系统调度程序,程序的一次动态执行。动态概念。有三部分组成:cpu,data,code.资源分配的单位
线程是进程中的多条执行路径。线程是进程中的一个实体。调度和执行的单位。一个进程中可能有一个或多个线程。
线程共享进程的地址空间和其他资源

3.死锁,饥饿,活锁
死锁:相互等待
饥饿;低优先级的线程和高优先级的线程强资源,由于得不到资源,而长时间得不到执行
活锁:相互谦让让出资源。线程1,2均需要资源A,B。线程1拥有资源A,线程2拥有资源B。线程1让出资源A,线程2让出资源B。。
导致没有任何一个线程可以同时拥有所有资源而得到执行。

死锁的四个必要条件:
互斥:同一资源同一个时刻只能有一个线程访问。
请求和保持:一个线程在请求其他资源时,不释放已经获得的资源
不可剥夺:一个线程在未执行完前,不可以剥夺他已获得的资源。
循环等待:多个线程间形成头尾相连的循环等待资源关系。
避免死锁的办法:
指定资源的获取顺序

4.你是如何调用 wait()方法的?使用 if 块还是循环?为什么?

答:wait() 方法应该在循环调用,因为当线程获取到 CPU 开始执行的时候,其他条件可能还没有满足,所以在处理前,循环检测条件是否满足会更好。
5.线程池的优点:
线程复用:减少线程创建和撤销的开销,一个线程创建后可以多次复用
控制最大并发数:可以根据系统情况,调整线程最大并发数,防止过多的内存消耗
线程管理:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,657评论 8 265
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 2,250评论 0 14
  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,447评论 1 14
  • 操作系统概论 操作系统的概念 操作系统是指控制和管理计算机的软硬件资源,并合理的组织调度计算机的工作和资源的分配,...
    野狗子嗷嗷嗷阅读 12,091评论 3 34
  • 致老友: 你说我有些悲观了,需要你的疏导。你觉得我可能遇到了挫折,或者遇到了人渣。我答应回复你一封邮件,向你解释。...
    灼灼LH阅读 288评论 0 0