线程复习一

线程等待:Object类中的wait()方法,导致当前的线程等待:
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待

线程加入:join()方法,等待其他线程终止。在当前线程中调用另一个线程的join()方法,则当前线程转入阻塞状态,直到另一个进程运行结束,当前线程再由阻塞转为就绪状态 yield():暂停当前正在执行的线程对象,并执行其他线程

线程让步:Thread.yield() 方法,暂停当前正在执行的线程对象,把执行机会让给相同或者更高优先级的线程
yield()方法对应了如下操作:先检测当前是否有相同优先级的线程处于同可运行状态,如有,则把 CPU 的占有权交给此线程,否则,继续运行原来的线程.

线程唤醒:Object类中的notify()方法,唤醒在此对象监视器上等待的单个线程

Thread类的setPriority()和getPriority()方法分别用来设置和获取线程的优先级

sleep()和wait()方法的最大区别是:sleep()睡眠时,保持对象锁,仍然占有该锁;而wait()睡眠时,释放对象锁.

线程类的一些常用方法:
sleep(): 强迫一个线程睡眠N毫秒。
isAlive(): 判断一个线程是否存活。
join(): 等待线程终止。
activeCount(): 程序中活跃的线程数。
enumerate(): 枚举程序中的线程。
currentThread(): 得到当前线程。
isDaemon(): 一个线程是否为守护线程。

setDaemon(): 设置一个线程为守护线程。
注意:Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常
守护线程与用户线程的区别:
用户线程和守护线程的区别在于,是否等待主线程依赖于主线程结束而结束

setName(): 为线程设置一个名称。
wait(): 强迫一个线程等待。
notify(): 通知一个线程继续运行。
setPriority(): 设置一个线程的优先级。

进程与线程的区别:
 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位)进程是一个具体的应用程序,线程是进程中的一个分支,为单独完成程序中的某一项或一组功能而存在

线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)
线程和进程一样分为五个阶段:创建,就绪,运行,阻塞,终止.
  多进程是指操作系统能同时运行多个任务(程序).
  多线程是指在同一程序中有多个顺序流在执行.

死锁(Deadlock)的形成:
打个比方,假设有P1和P2两个进程,都需要A和B两个资源,现在P1持有A等待B资源,而P2持有B等待A资源,两个都等待另一个资源而不肯释放资源,就这样无限等待中,这就形成死锁.
给死锁下一个定义:
如果一组进程中每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的.

产生死锁的必要条件:
互斥条件:某资源只能被一个进程使用,其他进程请求该资源时,只能等待,直道资源使用完毕后释放资源。
请求和保持条件:程序已经保持了至少一个资源,但是又提出了新要求,而这个资源被其他进程占用,自己占用资源却保持不放
不可抢占条件:进程已获得的资源没有使用完,不能被抢占。
循环等待条件:必然存在一个循环链。

多线程出现的原因:
解决负载均衡问题,充分利用CPU资源.为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰为了处理大量的IO操作时或处理的情况需要花费大量的时间等等

多线程的好处:
使用线程可以把占据时间长的程序中的任务放到后台去处理
用户界面更加吸引人,这样比如用户点击了一个按钮去触发某件事件的处理,可以弹出一个进度条来显示处理的进度
程序的运行效率可能会提高
在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程就比较有用了
多线程的缺点:
如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.
更多的线程需要更多的内存空间
线程中止需要考虑对程序运行的影响.
通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值