多线程

来源:互联网 发布:淘宝钢化膜评语 编辑:程序博客网 时间:2024/06/05 06:18


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


说明创造线程的方式有那两种
  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代码库同步关键代码即可
原创粉丝点击