JAVA线程

原创 2012年03月28日 16:12:34

一.线程状态

1.创建状态
使用new运算符创建一个线程后,该线程仅仅是一个空对象,系统没有分配资源,称该线程处于创建状态(new thread)

2.可运行状态
使用start()方法启动一个线程后,系统为该线程分配了除CPU外的所需资源,使该线程处于可运行状态(Runnable)

3.运行中状态

java运行系统通过调度选中一个Runnable的线程,使其占有CPU并转为运行中状态(Running).此时,系统真正执行线程的run()方法.

4.阻塞状态
一个正在运行的线程因某种原因不能继续运行时,进入阻塞状态(Blocked),如sleep,wait等等

5.死亡状态
线程结束后是死亡状态(Dead)

二.线程实现方式

1. 继承Thread类(适用于单重继承情况)

2.实现Runable接口

三.线程中断

错误观点:使用interrupt()来中断线程

例如,线程B调用线程A的interrupt(),将中断标志置位,在线程中A使用isInterrupted()判定,

并将中断标志复位,中断线程A。但是,当线程A处于阻塞状态时,B线程调用A线程的interrupt()方法,

会抛出中断异常,此时,中断标志位被复位,interrupt()没有了效果。

正确观点:使用共享变量来控制(使用修饰符volatile 或将变量的访问放在同步代码块中)线程的中断

四.wait方法和notify方法

wait方法和notify()方法的使用一般情况是相互对应的,即用了wait方法,就应该有notify方法。

例如,A,B线程共享C对象,A线程调用wait方法是阻塞自己,并且释放对象锁,B线程调用C对象notify方法唤醒A线程(如果只存在A,B两个线程的话),若不唤醒A线程,A线程将一直

阻塞下去,直到被中断。

五.synchronized关键字的理解

1.synchronized首选是获得对象的锁(每个对象只有一把锁),然后同步所有利用该对象的锁进行同步的代码块

2.static synchronized

 synchronized作用于static 函数,这等同于在方法内部使用synchronized(Foo.class) ,使用与该类所有对象实例的同步代码块

3.只是想让一段代码同步时,可以创建一个特殊的instance变量(它得是一个对象)来充当锁(零长度的byte数组对象创建起来将比任何对象都经济)

六.yield和join方法

yield方法是使当前线程放弃执行机会,进入可执行状态

join方法是当前线程将当前线程进入阻塞状态,让被调用线程执行,当被调用线程执行完后,进入可执行状态

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java线程

  • 2015-05-26 14:01
  • 53KB
  • 下载

java线程并发

  • 2016-01-14 17:20
  • 8.86MB
  • 下载

Java并发编程之线程(一)

概念 线程是一种轻量级的进程。 线程优点 多个线程拥有共享同一个地址空间和所有可用数据的能力。 线程比进程更容易创建和销毁 在大量计算和大量 I/O 处理过程中,多个线程能够加快程序执行速度。 进程...

java线程.rar

  • 2017-07-26 10:17
  • 232KB
  • 下载

java synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较

转载自:http://www.cnblogs.com/yanghuahui/p/3365922.html synchronized用于多线程设计,有了synchronized...

java线程.rar

  • 2015-05-05 14:33
  • 17.62MB
  • 下载

Java工程师线程试题

  • 2015-03-25 17:25
  • 36KB
  • 下载

java 学习----线程及其创建

java 中线程及其创建方式

Java线程.pdf

  • 2014-12-14 16:25
  • 281KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)