并发一:JAVA并发模型

本文介绍了并发的概念,区分了并发和并行的区别,并讨论了并发编程的优点。文章详细讲解了线程的实现方式,包括内核线程、用户线程和混合线程模型,并探讨了线程通信的共享内存和消息传递两种方式。JAVA并发基于内核线程实现,线程间通过共享内存通信,需要注意线程安全问题和资源消耗。最后,提到了JAVA内存模型和并发编程包J.U.C对并发编程的支持。
摘要由CSDN通过智能技术生成

一、并发

       并发程序是指在运行中有两个及以上的任务同时在处理,与之相关的概念并行,是指在运行中有两个及以上的任务同时执行,差别是在于处理和执行。在单核CUP中两个及以上任务的处理方式是让它们交替的进入CUP执行,这种对执行的处理方式就是并发。并行只能发生在多核CUP中,每个CUP核心拿到一个任务同时执行,并行是并发的一个子集

与串行程序相比并发编程的优点:

1) 提高硬件资源的利用率(特别是IO资源),提高系统的响应速度、减少客户端等待、增加系统吞吐量

2) 解决特定领域的问题,比如GUI系统,WEB服务器等。

如何实现并发:

1) 进程并发,PHP(pcntl_fork)、PYTHON(multiprocessing)中很常见基于多进程并发。

2) 线程并发,JAVA、C#以线程作为执行体进行并发。

3) 协程并发,GOLANG、SCALA中基于协程的并发,虽然协程是在线程中进程调度的,但是协程有自己的寄存器和栈,调度切换完全在用户态进行。可以简单的理解协程与线程间是N:1的关系,所以协程避免了线程创建和上下文切换的系统开销,理论上可以支持更大的并发量。

二、线程实现

       在操作系统中线程是包含在进程中的消费资源较少、运行迅速的最小执行单元,根据操作系统内核是否对线程可感知,把线程分为内核线程和用户线程。编程语言的线程实现都是基于这两种线程之上。

1) 基于内核线程(Kernel-Level Thread,KLT)

      使用内核线程的一种高级接口--轻量级进程(Light Weight Process,LWP)实现的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值