Java并发编程01——线程和进程

哈喽 我又来填坑了,之前写了两篇很简易的JUC,然后有两位好兄弟给我私信问我能不能详细那么亿点点,所以,我来了,本文参考资料应该是黑马或者是尚硅谷的,记不太清了,去年看的视频,今年刚发,见谅!

介绍

本系列文章共八篇,将从浅到深的讲述Java中并发编程相关知识,参考资料分为视频和书籍两部分,忘记了视频是哪个机构的了,书供参考三本 分别是《Java并发编程的艺术》、《Java多线程编程的核心技术》、《Java并发编程实战》,搭配上我这仅有的一点点工作以及实战经验,写出本系列文章,如果有文章中有任何错误或描述不准确的地方,欢迎各位大佬指正!

进程和线程

进程
  1. 什么是进程?
    进程可以理解为一个程序,比如说我们运行的chrome来访问csdn,其chrome就是一个进程,再比如说QQ,微信,360,这都是一个个的进程

  2. 进程分为哪几种
    进程分为可重复和不可重复运行两种,顾名思义,就是一个程序能否多次启动,可以重复启动的比如说txt,word等,不可重复启动的,如钉钉,QQ音乐,360等。 多次启动就会自动唤醒后台进程。

线程
  1. 什么是线程
    一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行,Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。 在 windows 中进程是不活动的,只是作为线程的容器,一个进程中,可以有多个线程同时运行,也就是我们所谓的并发线程,即Java多线程技术
进程和线程的区别
  1. 一个程序只有一个进程,可以有多个线程
  2. 不同进程通信比较麻烦,不同线程之间通信比较简单,本机跨进程通信需要使用IPC技术,不同机器则需要使用网络,如Socket HTTP等,而线程通信则很简单。
  3. 线程资源可以共享,进程资源相对于线程更加独立
  4. 线程更轻量,线程上下文切换成本一般上要比进程上下文切换要低得多

并发和并行

并发
  1. 什么是并发
    而并发是指两个或多个事件在同一时间段内(很短)发生
并行
  1. 什么是并行
    并行是指两个或者多个事件在同一时刻发生

也许这样说是很抽象的,这里说一个技巧,微观并发,宏观并行,就是对于我们来讲,其实看到的效果就是并行的,多件事情在同一时刻被处理了,但是对于CPU来讲,因为存在一个时间片切换,但是时间很短,只有15ms左右,人眼是无法发现的。 所以微观并发,宏观并行的意思就是其实CPU执行的是并发,我们看着的是并行。 所以才有高并发的概念,并没有高并行这一说。

实际应用

  1. 使用Java多线程提高多核CPU利用效率,避免一核努力,七核围观的情况。
    如某安全软件的多个页签,可以同时清理垃圾,杀毒,甚至可以下载广告等,这就属于利用多线程充分使用CPU资源
  2. 使用异步技术 (如Ajax等) 可以避免长期等待返回结果所造成的阻塞
    比如要做一个文件下载的操作,调用了一个很耗时的方法,此时如果使用同步的方式,便会造成程序阻塞,长时间等待返回结果的情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值