黑马程序员---线程间通信、停止线程等
来源:互联网 发布:软件图标显示异常 编辑:程序博客网 时间:2024/05/17 04:01
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
1、线程间通信:
其实就是多个线程在操作同一个资源,但是操作的动作不同。
wait; notify(); notifyAll();
都使用在同步中,因为要对持有监视器(锁)的线程操作。所以要使用在同步中,因为只有同步才具有锁。
为什么这些操作线程的方法要定义在Object类中呢?
因为这些方法在操作同步中的线程时,都必须要标识它们所操作线程的锁,只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒。不可以对不同锁中的线程进行唤醒。
也就是说,等待和唤醒必须是同一个锁。而锁可以是任意对象,所以可以被任意对象调用的方法定义在Object类中。
JDK1.5中提供了多线程升级解决方案。
将同步Synchronized替换成现实Lock操作。将Object中的wait,notify,notifyAll,替换了condition对象。该对象可以Lock锁,进行获取。
释放锁的动作一定要执行。
2、停止线程
stop方法已经过时,那么如何停止线程呢?
只有一种方法,那就是run方法结束。
开启多线程运行,运行代码通常都是循环结构,只要控制住循环,就可以让run方法结束,也就是线程结束。
特殊情况:当线程处于冻结状态,就不会读取到标记,那么线程就不会结束。
面对这种特殊情况,当没有指定的方式让冻结的线程恢复到运行状态时,这时就需要对冻结进行清除。强制线程恢复到运行状态中来,这样就可以操作标记让线程结束。
Thread类中提供了这种方法:interrupt。
守护线程(后台线程):前台线程结束,后台线程自动结束。
join方法:等待调用该方法的线程结束,其他线程才能开始执行。
优先级:所有线程默认优先级为5.(1-10)
yield方法:暂停当前正在执行的线程对象,并执行其他线程。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
- 黑马程序员---线程间通信、停止线程等
- 黑马程序员_day12 多线程(线程间通信,停止线程,守护线程,Join方法,优先级)
- 黑马程序员 ---- 线程间通信
- 36.黑马程序员-停止线程、守护线程
- 黑马程序员——008——多线程②(线程间通信(同步,锁)、停止线程)
- 黑马程序员_线程间的通信
- 黑马程序员:JAVA线程间的通信
- 黑马程序员-线程间的通信
- 黑马程序员-线程间的通信
- 黑马程序员---多线程:线程间通信
- 黑马程序员_<<线程间通信>>
- 黑马程序员_线程间的通信
- 黑马程序员---多线程、线程间通信
- 黑马程序员-day12-多线程(线程间通信)
- 黑马程序员-day12多线程-线程间通信
- 黑马程序员——线程间通信
- 黑马程序员-多线程--线程间的通信
- 黑马程序员--线程间的通信
- oracle 快速查询数据库各种信息、及转换对应java代码
- DB2在线移动表ADMIN_MOVE_TABLE
- 调用 libcurl 出现各种莫名其妙的问题!shit
- Eclipse(Android)工程依赖和jar的关系
- C++初始化与赋值
- 黑马程序员---线程间通信、停止线程等
- 一道面试题
- poj.1988并查集-路径压缩、更新结点(偏移量)
- vi的高级使用
- 课下总结
- 验证文本框只能输入数字
- merge into多表关联更新
- 链表分段反转
- 常用正则表达式