1.进程:正在进行的程序
  线程:进程中的执行单元(执行情景、执行路径)
  进程和线程的关系:进程中可以多个线程,最少有一个。
  多线程:进程中有多条线程执行
2.线程的创建方式:
   第一种:1.定义一个类,继承Thread类
           2.重写Thread类当中的run方法
	   3.创建Thread子类的对象
	   4.调用线程对象的start方法
   第二种:1.定义一个类,实现Runnable接口
           2.重写Runnable接口中run方法,把实现内容写在run方法中
	   3.创建接口的实现类对象
	   4.创建Thread对象,将Runnable接口实现类的对象作为Thread类构造函数的参数
	   5.调用Thread类对象的start方法,开启线程
   两种创建方式之间的区别:
   1.一种是继承Thread类,一种是实现Runnable接口
   2.一种是直接用类的对象调用start方法,一种是需要将Runnable接口的实现类作为Thread类的构造函数,然后用
      Thread类的对象调用start他方法
   Thread类子类的对象和Runnable实现类的对象有什么区别:
         Thread类子类对象是线程对象,Runnable实现类对象是任务对象
3.线程不安全因素造成的原因:
        多个线程同时操作共享数据
	操作共享数据的代码有多条
  线程安全问题的解决方案:
        保证一个线程在执行多条操作共享数据时,其他程序不参与运算
  同步的前提:
       同步中有多个线程
       多线程使用同步时,用的是同一个对象
4.同步函数和同步代码块有什么区别:
        同步函数比同步代码块写法简单
	同步函数使用的锁固定是this,同步代码块使用的锁可以使任意类的对象
  同步函数的锁是什么:  当前类的对象this
        
  静态同步函数的锁是什么:  当前类的字节码文件对象(  类名.class  )
5.分析单例模式的线程问题:
         有共享数据时,同时操作共享数据的语句有多条
6.死锁造成的原因,以及如何避免
         原因是同步的嵌套,两个同步使用的不是同一把锁,避免方式就是减少同步的嵌套
7.线程的生命周期(线程的常见状态)
       1.新建-----当创建Thread类的一个实例时,此线程进入新建状态
       2.就绪-----线程已经被启动,具备执行资格,没有执行权利
       3.阻塞-----由于某种原因导致正在运行的线程暂停
       4.运行-----获得CPU执行资格,也具备CPU执行权利
       5.死亡-----线程执行完毕,进入死亡状态
原文:http://www.cnblogs.com/cuihongfei-0903/p/7171916.html