JAVA中的多线程学习

上一篇 / 下一篇  2013-05-13 21:11:09 / 个人分类:JAVA学习

实现线程的方式有两种
第一种是继承Thread,但是由于JAVA中只能单继承,不是太常用
第二种为继承接口Runable
方法同样是覆写run方法,但是要将new出来的对象放到thread的对象中,再调用start方法
这里假若直接调用了run方法,则是创建了线程,但是并没有执行
对于线程,存在五种状态
被创建:new出来后
执行:调用start的方法
冻结:sleep,wait(notify后到运行)
阻塞:具备运行资格,但是没有执行权(比如被synchronized了)
消亡:interrupt(stop)

注:wait方法需要try一下

说到线程,不得不提及锁的概念
即一个共享事物,但是只能被一个用户使用,这时候就得将这个事物加上一把锁,或者将这个方法给synchronized了,
需要注意的是,对于同步函数的锁是this,或者就是调用的事物,但是对于静态同步函数来说,同步的锁是Class,也就是该方法所在类的字节码文件对象,比如 A implentments Runable……synchronized(A.class)
使用在同步中,要对持有锁的线程的操作
等待和被唤醒必须是同一把锁
对于为何是object类型,因为作为锁可以是任意的对象,只有万能的object类才行。
对于1.5后JDK版本,lock接口和condition对象,提供现实Lock操作,一个锁对应多个对象,最后释放锁的动作一定要执行
interrupt 将处于冻结状态线程强制恢复到运行状态,并非结束进程
joint 是抢夺CPU的执行权,当主线程碰到A线程的joint状态时,等待其执行完成
yeild 暂停当前正在执行的对象,释放执行权,减缓线程执行的频率

TAG:

 

评分:0

我来说两句

日历

« 2024-04-24  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 10036
  • 日志数: 20
  • 建立时间: 2013-03-24
  • 更新时间: 2014-03-22

RSS订阅

Open Toolbar