初学者认识线程和进程

先区分一下几个比较相似的概念吧
进程:表示一个任务。
线程:一种比进程更小的执行单位,依附在进程中,多个线程共享一个进程的资源。
假设有一项任务是修建一条10公里的马路,需要费用100万元,给某建筑公司修建需要10个月,这可以看作是一个进程;然而我需要更快时间完成这项任务,于是我把这个任务分成子任务由10个建筑公司同时修建,每个公司10万元修建一公里,这可以看作是多个线程。


同步——使用者通过单个线程调用服务;该线程发送请求,在服务运行时阻塞,并且等待响应。(打电话)
异步——使用者通过两个线程调用服务;一个线程发送请求,而另一个单独的线程接收响应。 (发短信)
举个例子:普通B/S模式(同步)AJAX技术(异步)
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕


线程的同步:
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.
在一个对象中,用synchonized声明的方法为同步方法,每个类实例对应一把锁
每个 synchronized方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放。
这种机制确保了同一时刻对于每一个类实例中,其所有声明为 synchronized 的成员方法中至多只有一个处于可执行状态(思考一下,没有声明为synchronized 的方法,可不可以访问该类的实例呢?).
补充: 在Java 中,不光是类实例,每一个类也对应一把锁,这样我们也可将类的静态成员函数声明为 synchronized,以控制其对类的静态成员变量的访问。

synchronized 方法的缺陷:若将一个大的方法声明为synchronized 将会大大影响效率,典型地,若将线程类的方法 run() 声明为 synchronized ,由于在线程的整个生命期内它一直在运行,因此将导致它对本类任何 synchronized 方法的调用都永远不会成功。
典型地,若将线程类的方法 run() 声明为 synchronized,
由于在线程的整个生命期内它一直在运行,因此将导致它对本类任何 synchronized 方法的调用都永远不会成功。
缺陷解决办法:
synchronized块:通过 synchronized关键字来声明synchronized 块。语法如下:
synchronized(syncObject) {
//允许访问控制的代码 }
synchronized 块是这样一个代码块,其中的代码必须获得对象 syncObject (如前所述,可以是类实例或类)的锁方能执行,由于可以针对任意代码块,且可任意指定上锁的对象,故灵活性较高。(给一个对象加锁时,要考虑该实例的所有方法,同时也要注意死锁,有时间会更新关于多线程同步带来的死锁现象)

线程的阻塞:
为了解决对共享存储区的访问冲突,Java 引入了同步机制,多个线程对共享资源的访问,同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源也可能不止一个。为了解决这种情况下的访问控制问题,Java 引入了对阻塞机制的支持。
阻塞指的是暂停一个线程的执行以等待某个条件发生,Java 提供了大量方法来支持阻塞
sleep() 方法suspend() 和 resume() 方法 yield() 方法
前面叙述的所有方法,阻塞时都不会释放占用的锁!!!
前面叙述的所有方法都可在任何位置调用,
但是wait() 和 notify() 方法却必须在 synchronized 方法或块中调用,
原因如下:锁是任何对象都具有的!!!
调用任意对象的 wait() 方法导致线程阻塞,并且该对象上的锁被释放!!!
只有在synchronized 方法或块中当前线程占有锁,才有锁可以释放。同样的道理,调用这一对方法的对象上的锁必须为当前线程所拥有,这样才有锁可以释放。
内容概要:《学术研究提示设计 50 招》是一份详尽的指南,旨在帮助研究人员提高学术写作和研究效率。该文档涵盖了从论文撰写、润色、翻译、查重降重、参考文献管理、投稿审稿到文献阅读等多个方面的具体操作指令。每一章节均针对特定任务提供了详细的步骤和注意事项,例如如何撰写标题、摘要、致谢,如何进行英文润色、中英翻译,以及如何优化逻辑结构等。文档还介绍了如何利用AI工具进行文献分析、术语表提取和研究方向探索等内容,为研究者提供了全面的支持。 适合人群:适用于学术研究人员,特别是那些需要撰写、润色和提交学术论文的研究者,包括研究生、博士生及高校教师等。 使用场景及目标:① 提供一系列具体的指令,帮助研究者高效完成论文的各个部分,如撰写标题、摘要、致谢等;② 提供润色和翻译的详细指导,确保论文语言的准确性和专业性;③ 提供查重降重的方法,确保论文的原创性;④ 提供参考文献管理和投稿审稿的指导,帮助研究者顺利发表论文;⑤ 利用AI工具进行文献分析、术语表提取和研究方向探索,提高研究效率。 阅读建议:此资源不仅提供了具体的指令和方法,更重要的是引导研究者如何思考和解决问题。因此,在学习过程中,不仅要关注具体的步骤,还要理解背后的原理和逻辑,结合实际案例进行实践和反思。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值