A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 古典牧童 于 2015-5-12 01:11 编辑

01. 什么是进程?         当我们运行硬盘上的某个应用程序的时候,操作系统会把这个应用程序从硬盘上加载到内存中,然后在内存中为这个应用程序开辟运行自己程序的内存空间。这个内存空间就称为内存中的一个进程。
02. 什么是线程?
        在一个进程中,负责独立运行某个功能,或者某些代码块的那个小单元,就称为当前进程中一个线程。我们的JVM就是一个多线程的应用程序。线程是用来负责进程中某个独立的功能,或者某段代码块的执行。在执行的过程中,它有自己独立的运行空间,并且多个线程执行不会相互影响。如果一个CPU只有一个处理核心,那么在某个时刻真正只能去处理一个线程。如果CPU拥有多个处理核心,那么在某个时刻就可以实现多个程序同时执行了我们创建多线程的目的是让多部分代码能够同时执行
03. 创建线程的两种方式?  
         A----继承Thread类,复写run方法,Thread是线程类,没什么好说的               
         B----由于类的单继承性的局限性,有些类已近继承了其他类,如果它还想实现多继承,就不能继承Thread类了,那么它就只能实现Runnable接口,该接口抽取了Thread类里面的run方法,这样做的目的是让Thread类就专门用来负责线程的各种操作,让Runnable接口专门用来封装线程要执行的任务。将Runnable实现类的对象作为参数传递到Thread类构造里面,是为了关联线程任务和线程对象。        
04. 多线程的几种状态?
          临时阻塞状态(具备CPU执行资格,不具备执行权),运行状态(线程具备执行资格和执行权),冻结状态(线程不具备CPU执
行资格,线程释放CPU执行权)
05. 其他重点内容:
          当多线程执行共享数据时,CPU会在线程间不停切换,这种切换我们是不能控制的,当线程在执行共享数据过程中CPU是可能切换到其他线程,所以线程就会出现完全问题,这时我们需要使用到同步代码块synchronized。当线程进入到同步代码块里面时,需要获取一把锁,OBJECT对象都行,其他线程会处于临时阻塞状态,知道该线程把共享数据操作完成才能执行其他数据。还有同步函数,同步函数操作的锁为this(调用这个方法的对象),静态同步方法的锁为 类名.class
          死锁:最常见的原因是锁的嵌套循环,例如if  else判断语句里面,当线程满足if条件,获得A锁执行if里面的同步,A同步里面还嵌套了一个同步,需要B锁,这时线程切换到else条件,获得了B锁执行里面的同步,这个同步里面也嵌套了一个同步,需要获得A锁才能执行。
          sleep是线程冷却,比喻说释放魔法技能有技能CD。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马