多线程



说明进程和线程的区别
  进行是一个应用程序在处理机上的一次执行过程,他是一个动态的概念
  线程是进程中的一部分,进程保护多个线程在运行


说明创造线程的方式有那两种
  1.通过Thread类来创建多线程
    a. 每个线程之间并无人任何关系,这就说明每个线程之间是平等的,没有优先级
       但是每个线程并不是依次交替执行,而是在三个线程同时被执行的情况下
       有的线程被分配时间片的机会多,而有的线程被分配的时间片的机会比较少
  2.通过实现Runnable接口来创建多线程
    a. 多个线程执行同一任务,而且这个多线程之间将共享同一个资源
  
线程的生命周期可分为几个阶段,各是什么阶段
  1. 新建、就绪、运行、阻塞、死亡


使用线程的什么方法可以设置线程的休眠、线程的限制执行、线程的礼让
  1. 休眠 Thread.sleep(2000) 线程在两秒内不会进入就绪状态,由于sleep()方法可能会异常,需要放入try/catch块中。醒来以后并不能爆炸进入运行状态,只能保证他醒来后进入就绪状态
  2. 线程的加入 join() 当某个线程使用join()方法加入到另外一个线程时,另一个线程会等待该线程执行完毕在继续执行
  3. 线程的中断 interrupt()方法使线程离开run()方法,同时结束线程,但程序会抛出interruptedException异常,用户可以在处理该异常时完成线程的中断业务处理,比如终止while循环
  4. 线程的礼让 yield()方法 给当前正处处于运行状态下的线程一个提醒,告知它可以将资源礼让给其他小线程,当这仅是一种暗示,没有任何一种机制保障当前线程会将资源礼让
     yield()方法使具有同样优先级的线程有进入可执行状态的机会,当当前线程放弃执行权时会再度回到就绪状态。对于支持多任务的操作系统来说,不需要调用yeild()方法,因为操作系统会为线程自动分配CPU时间片来执行


什么情况下需要进行线程的同步,线程同步有几种方式
  1. synchronized关键字修饰的方法。由于Java的每个对象都有内所,当用此关键字修饰方法时,内置所会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态
     同步是一种高开销的操作,因此尽量减少同步的内容。通常没有必要同步整个方法,使用synchronized代码库同步关键代码即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值