黑马程序员技术交流社区
标题:
线程的生命周期分为哪几个阶段?
[打印本页]
作者:
czhczhczh
时间:
2016-1-15 20:40
标题:
线程的生命周期分为哪几个阶段?
线程的生命周期分为哪几个阶段?
作者:
fagug
时间:
2016-1-15 22:23
新建,运行,中断,死亡
作者:
1178988315
时间:
2016-1-15 22:43
新建,就绪,运行,阻塞,死亡
作者:
shenfuhan
时间:
2016-1-16 00:37
还没学到那里
作者:
黑色皮肤的马
时间:
2016-1-16 16:43
新建,就绪,运行,阻塞,死亡。
新建就是创建一个新的线程对象,如果此时调用 start() 方法会到就绪状态。
就绪是具备执行资格,不具备执行权。如果抢到CPU执行权就到运行状态。
如果此时调用 sleep() 或者 wait() 方法,则进入阻塞状态。
如果此时 run() 方法执行完毕或者调用 stop() 方法,则进入死亡状态。
在阻塞状态下,调用 weak() 或 notify() 方法就重新回到就绪状态。
死亡状态就是线程对象变成垃圾,等待被垃圾回收器回收。
作者:
YukiChan
时间:
2016-1-16 23:21
四种状态:新建,运行,中断,死亡 书本上有哦
作者:
hi丶bo
时间:
2016-1-17 13:19
1、什么是多线程?进程和线程的区别是什么? 多线程就是应用程序的多条执行路径。 进程:正在运行的应用程序,每个进程的具备独立的运行空间。 线程:是进程的执行单元,执行路径。如果是多个线程,那么,这多个线程共享同一个进程资源。 2、启动线程调用的是run()还是start()方法?run()和start()的区别是什么?(*面试题) 启动线程调用的是start() run()封装了被线程执行的代码,start()是启动线程并调用run()方法。 3、多线程有几种实现方案?分别是什么?如何操作?(*面试题) 多线程有两种实现,分别是: 1),继承Thread类 自定义类继承Thread类,在类中重写run()方法,测试类中创建自定义类对象,并调用start()方法 2),实现Runnable接口 自定义类实现Runnable接口,重写run()方法,测试类中创建自定义对象, 创建Thread对象,把自定义对象作为构造参数传递。调用Thread类的start()方法。 4、线程的生命周期? (*面试题) 新建: 创建线程对象 就绪: 具备cup执行资格,没有执行权,随时准备执行 运行: 具备执行资格,执行权,执行run()中的代码 堵塞: 是当线程运行到符合某个我们定义的条件时,它会停止下来等待唤醒 死亡: run()结束了 5、多线程为什么会出现安全问题?怎么解决呢?(*面试题) 如果满足以下条件,那么就会出现安全问题: A:是多线程程序。 B:有共享的数据。 C:针对共享数据有多条语句操作。 只要我们把多线程环境中,把操作共享数据的操作,变成单线程就没有问题了。 Java针对这种情况,就提供了同步技术: A:同步代码块 B:同步方法 C:JDK5以后的Lock锁 6、同步的锁对象分别是?(*面试题) 代码块:任意对象 方法:this 静态方法:类名.class 7、sleep()和wait()的区别?(*面试题) sleep():必须指定时间,不释放锁对象。 wait():可以指定时间,也可以不指定。释放锁对象。 8、线程死锁是什么,为什么有死锁,怎么解决死锁?(*面试题) 为了解决程序因占用资源,出现资源争抢,而出现的程序进入等待的状态(死锁)。 举例:有A和B两个线程,有CD 两把锁, A和B嵌套CD锁,A线程中有C,D锁,B线程中有D C两把锁,当两个线程运行时,就可能会出现死锁导致 程序停滞的情况。 怎么解决:真正意义上来说,死锁是不能被解决的,死锁是多线程中的一个需要避免的重大的问题,当我们在编写程序时,可以给共享的资源加上另外一 个把锁,控制资源的动态,同时可以设置线程的优先级使线程之间协调合理的利用CPU的时间。 9、线程间的通信是什么? 不同种类的线程针对同一个资源的操作。
作者:
542826323
时间:
2016-1-17 15:32
楼上中介的很清晰,感谢,学习了。
作者:
lizhanyi12345
时间:
2016-11-22 10:56
新建,运行,中断,死亡
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2