Java 多线程学习(1)一些容易被遗忘的基础概念

转载请注明原创出处,谢谢!

HappyFeet的博客

有些知识很久不看很容易就会忘掉,尤其是一些概念性知识。好记性不如烂笔头,不如记下来便于以后翻看。


1、并发和并行
  • 并发:处理多个任务的能力,不一定要同时
  • 并行:同时处理多个任务的能力。

二者区别在于是否同时。参考:并发与并行的区别?

2、进程和线程

放几个比较有趣的答案,参考:线程和进程的区别是什么?

  • 进程和线程都是一个时间段的描述,是 CPU 工作时间段的描述,只不过颗粒大小不同。

    进程就是时间总和 = CPU 加载程序上下文的时间 + CPU 执行时间 + CPU 保存程序上下文的时间
    
    线程也是时间总和 = CPU 加载线程上下文的时间 + CPU 执行时间 + CPU 保存线程上下文的时间 	
    
  • 进程是爹妈,管着众多的线程儿子

3、线程安全性

当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。摘自:《Java 并发编程实战》

4、竞态条件和临界区

当多个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。

5、线程的生命周期
  • NEW:新建
  • RUNNABLE:运行
  • BLOCKED:阻塞
  • WAITING:无限期等待
  • TIMED_WAITING:限期等待
  • TERMINATED:结束
6、Java 线程调度

线程调度是指系统为线程分配处理器使用权的过程,主要调度方式有两种,分别是协同式线程调度抢占式线程调度

7、僵尸进程和孤儿进程
  • 一个进程使用 fork 创建子进程,如果子进程退出,而父进程并没有调用 waitwaitpid 获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程(或称僵死进程)。
  • 一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。

参考资料:

(1)《深入理解 Java 虚拟机》周志明 著.

(2)《Java 并发编程实战》

(3)并发与并行的区别?

(4)线程和进程的区别是什么?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值