Java 多线程

Thread和Runnable区别

  • Thread实现了Runnable接口,在执行多线程之前还分配了CPU资源,检查线程是否启动等事情,然后再执行线程。
  • Runnable适合多个相同程序代码的线程去处理同一个资源。
  • Runnable接口可以避免Java单继承的局限。
  • Runable增加了程序的健壮型,代码能够被多个线程共享,数据和代码是独立的。

线程状态

五种状态:创建,就绪,运行,阻塞,终止。

线程使用start()后不会立刻启动,而是处于就绪状态,等待CPU调度后才开始。


进程和线程的区别

  • 线程在进程基础上划分。
  • 线程消失,进程还继续。进程消失,线程结束。
  • 进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。
  • 线程是进程的实体,是CPU调度和分派的基本单位,比程序更小的能独立运行的基本单位。

多线程实现的两种方式

  • 继承Thread
  • 实现Runnable接口

线程启动

通过start()方法完成,需要进行CPU调度,调用start()实际上是run()方法。


线程终止

  • stop(),容易有问题,已经过时
  • volatile变量当作控制条件,控制线程执行。
  • interrupt来使处于sleep() wait()等状态的线程终止。
  • 用Future的cancel方法也可以终止线程。

多线程中建议使用Runnable接口实现,这样可以避免由单继承所带来的开发局限,使用Runnable接口可以达到资源共享的目的。


猜你喜欢

转载自my.oschina.net/u/1046919/blog/1539271