黑马程序员技术交流社区
标题:
多线程的问题
[打印本页]
作者:
xiaoxiaofeng
时间:
2014-8-5 08:10
标题:
多线程的问题
多线程有那几个状态?状态之间是怎么转换的?
作者:
xbz1986
时间:
2014-8-5 09:06
实现线程有两种 继承Thread类或者实现Runnable接口... 实现同步也有两种,一种是用同步方法,一种是用同步块.. 同步方法就是在方法返回类型后面加上synchronized, 比如:
public void synchronized add(){...}
同步块就是直接写:synchronized (这里写需要同步的对象){...}
作者:
200米王朝
时间:
2014-8-5 09:40
我也是问的别人
java中,每个线程都需经历新生、就绪、运行、阻塞和死亡五种状态,线程从新生到死亡的状态变化称为生命周期。用new运算符和Thread类或其子类建立一个线程对象后,该线程就处于新生状态。
新生--->就绪: 通过调用start()方法
就绪--->运行: 处于就绪状态的线程一旦得到CPU,就进入运行状态并自动调用自己的run()方法
运行--->阻塞: 处于运行状态的线程,执行sleep()方法,或等待I/O设备资源,让出CPU并暂时中止自己运行,进入阻塞状态
阻塞--->就绪: 睡眠时间已到,或等待的I/O设备空闲下来,线程便进入就绪状态,重新到就绪队列中等待CPU。当再次获得CPU时,便从原来中止位置开始继续运行。
运行--->死亡: (1)(正常情况下)线程任务完成
(2)(非正常状况)线程被强制性的中止,如通过执行stop()或destroy()方法来终止一个线程
作者:
Bermuda
时间:
2014-8-5 11:34
线程状态.jpg
(1.58 MB, 下载次数: 9)
下载附件
2014-8-5 11:32 上传
我做了张图 你看一下吧 线程间通信的
作者:
java—family
时间:
2014-8-5 12:16
线程状态有5种。这里的重点我认为在,有没有执行权和执行资格。
作者:
liubea
时间:
2014-8-5 14:08
据我的了解,多线程应该有创建状态,可运行状态,运行状态,阻塞状态,消亡状态。可利用wait,notify进行线程之间的通行。
作者:
Caincxy
时间:
2014-8-5 14:28
好吧,我是来学习的
作者:
晓风
时间:
2014-8-5 16:28
线程的运行状态有五种:(分法各有不同,不过基本是这样的。)
一,创建:(获得执行资格)
创建一个线程,如Thread thread = new Thread();
二,运行:(有执行资格,有执行权)
调用start()分法开启线程。如:thread.start();
三,冻结:(没有执行资格,没有执行权)
1,调用了sleep(long time)分法,休眠,放弃执行权;如:thread.sleep(15);
2,调用wait(),方法使线程等待,放弃执行权;如:thread.wait();
四,阻塞:(有执行资格,没有执行权)
1,当线程休眠时间到,或者等待线程被notify,notifyAAll分法唤醒时,不会立即执行,此时是获得执行资格,没有执行权。处于排队状态。
五,消亡:(线程消失)
1,调用stop()方法,是线程停止。此方法已经过时。因为该方法存在固有的安全问题。
2,线程的run方法执行完毕,线程结束。
3,由于stop()方法有问题,已经没有用了。则要是线程停止的唯一方式是是run方法执行完。
若果线程一直有执行资格和执行权,则会当线程将run方法执行完毕后就结束。
因为多线程中要在同步时,循环判断锁,所有只要控制了循环就能控制run方法。
为了防止线程由于处于冻结状态,一般会使用interrupt()方法来清楚冻结状态。
使线程继续执行run方法,以结束线程,释放资源。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2