进程和线程的区别

进程是操作系统分配资源的最小单元,线程是CPU调度的最小单位。Java中,每个进程对应一个JVM实例,可以有多个线程并发执行。同步和异步分别指定了数据操作的顺序和是否可以同时进行。线程调度器分配CPU时间,时间分片是分配策略之一。JVM启动时包含主线程和垃圾回收线程。线程安全涉及原子性、可见性和有序性三个特性。QPS是衡量系统处理能力的指标,表示每秒查询率。
摘要由CSDN通过智能技术生成

01 进程(Process)/线程(Thread)

进程
进程是操作系统分配资源的最小单元
点击exe 就会进入内存中 进入内存中的程序叫进程
从任务管理器结束进程时 就会内存中清除了
内存中运行的应用程序 每个进程都有独立的内存空间
一个应用程序可以同时运行多个进程
进程也是程序的一次执行过程 是系统运行的基本单位
系统运行一个程序就是从创建程序 运行 消亡的过程
一个程序运行后至少有一个进程
线程
线程是操作系统进行运算调度的最小单位
一个进程至少包含一个线程 是进程的实际运作单位
一个进程包括多个线程 那么这条进程就是多线程的
多线程并发执行可以提高程序的效率 可以同时完成多项工作
main()方法启动的教程叫主线程
多次启动一个线程会报错 尤其是已经线束了再次启动

区别
进程是分配资源的最小单位,线程是CPU调度的最小单位
进程是抢占处理机的调度单位 线程属于某个进程 共享受资源
线程只由堆栈寄存器 程序计数器和TCB组成
线程不能看做独立应用 而进程可看做独立应用
进程有独立的地址空间 相互不影响 线程只是进程的不同执行路径
线程没有独立的地址空间 多进程的程序比多线程程序健壮
进程的切换比线程的切换开销大

java进程和线程的关系
java对操作系统提供的功能进行封装 ,包括进程和线程
运行一个程序会产生一个进程,进程至少包含一个线程
每个进程对应一个jvm实例,多个进程共享jvm里的堆
java采用单线程编程模型,程序会自动创建主程序
主线程可以创建子线程,原则上要厚与子线程完成执行
线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务
不同进程使用不同内存空间和代码,同一进程的不同线程共享相同内存空间和代码

02 并行 并发

        并行      多个任务同一时间点同时进行(需要多核CUP)
                    速度快,效率高                
       并发      多个任务都请求运行,CUP只能接收一个任务,所以轮流进行
                    因为时间间隔较短,以为是同时进行         

04 同步和异步有何异同

       同步是指一个做完了,再做另外一个
      异步是指可以同时进行

 1   如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

2.   当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率

05 线程调度器(Thread Scheduler)/时间分片(TimeSlicing)

 线程调度器是一个操作系统服务,它负责 Runnable状态的线程分配CPU时间。一旦个线程启动,它的执行便依赖于线程调度器的实现

时间分片指将可用的CPU时间分配给可用 Runnable线程的过程。分配CPU时间可以基于线程优先级或者线程等待时间

线程调度方式
1 分时调度
所有线程轮流使用CUP的使用权 平均分配每个线程占用cup的时间
2 抢占式调度 java使用的是抢占式调度
优先(但不总是这样)让优先级别高的线程使用cup 如果线程的优先级相同 随机选择一个

06 jvm启动是多线程的吗

     是多线程的,jvm启动至少启动了,垃圾回收线程和主线程(main方法) 

07 并发线程特性(三要素)

当没有满足这三大特性,就可能发生线程安全问题

(1) 原子性
这段代码被一个线程要么执行要么不执行,不可能执行到一半被其他的线程中断
解决办法: 加锁
(2) 可见性
多个线程同时访问同一变量时,一个线程修改变量的值,其它线程能立即看得到它修改的值
volatile解决线程间的可见性,强制线程每次读取该值的时候都去主内存中读取
(3) 有序性
程序执行的顺序按照代码的先后顺序执行(处理器可能会对指令进行重排序)
程序是按代码顺序执行,对于单线程来说确实是如此,但多线程情况下就不是如此。为了优化程序执行和提高CPU的处理性能,JVM和操作系统都会对指令进行重排,也就说前面的代码并不一定都会在后面的代码前面执行,即后面的代码可能会插到前面的代码之前执行,只要不影响当前线程的执行结果。所以,指令重排只会保证当前线程执行结果一致,但指令重排后势必会影响多线程的执行结果。虽然重排序优化了性能,但也是会遵守一些规则的,并不能随便乱排序,只是重排序会影响多线程执行的结果


08 QPS(Queries-per-second)

每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
QPS = 并发量 / 平均响应时间

TPS
吞吐量


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值