技术开发 频道

java线程学习总结

  【IT168技术文档】1.线程中一些基本术语和概念

  1.1线程的几个状态

  初始化状态

  就绪状态

  运行状态

  阻塞状态

  终止状态

  1.2 Daemon线程

  Daemon线程区别一般线程之处是:主程序一旦结束,Daemon线程就会结束。

  1.3锁的定义

  为了协调多个并发运行的线程使用共享资源才引入了锁的概念。

  1.4死锁

  任何多线程应用程序都有死锁风险。当一组线程中的每一个都在等待一个只

  有该组中另一个线程才能引起的事件时,我们就说这组线程死锁了。换一个说法

  就是一组线程中的每一个成员都在等待别的成员占有的资源时候,就可以说这组

  线程进入了死锁。死锁的最简单情形是:线程 A 持有对象 X 的独占锁,并且

  在等待对象 Y 的锁,而线程 B 持有对象 Y 的独占锁,却在等待对象 X 的锁。

  除非有某种方法来打破对锁的等待(Java 锁定不支持这种方法),否则死锁的线

  程将永远等下去。

  1.5.Java对象关于锁的几个方法

  1.5.1 wait方法

  wait方法是java根对象Object含有的方法,表示等待获取某个锁。在wait方法进入前,会释放相应的锁,在wait方法返回时,会再次获得某个锁。

  如果wait()方法不带有参数,那只有当持有该对象锁的其他线程调用了notify或者notifyAll方法,才有可能再次获得该对象的锁。

  如果wait()方法带有参数,比如:wait(10),那当持有该对象锁的其他线程调用了notify或者notifyAll方法,或者指定时间已经过去了,才有可能再次获得该对象的锁。

  参考 thread.lock.SleepAndWait

  1.5.2 notify/notifyAll方法

  这里我就不再说明了。哈哈,偷点懒。

  1.5.3 yield方法

  yield()会自动放弃CPU,有时比sleep更能提升性能。  

0
相关文章