Fork me on GitHub
摘要: 如何正确停止一个线程1)共享变量的使用中断线程最好的,最受推荐的方式是,使用共享变量(sharedvariable)发出信号,告诉线程必须停止正在运行的任务。线程必须周期性的核查这一变量(尤其在冗余操作期间),然后有秩序地中止任务。当线程等待某些事件发生而被阻塞,又会发生什么?果线程被阻塞,它便不能核查共享变量,也就不能停止。这在许多情况下会发生,例如调用Object.wait()、ServerSocket.accept()和DatagramSocket.receive()时。2)Thread.interrupt()的理解Thread.interrupt()方法不会中断一个正在运行的线程。这一 阅读全文
posted @ 2014-01-17 19:21 zhanjindong 阅读(1051) 评论(0) 推荐(0) 编辑
摘要: 什么是线程安全当多个线程访问某个类时,不管运行环境采用何种调度方式或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。竞态条件当某个计算的正确性取决于多个线程的交替执行时序时,那么就会发生竞态条件。换句话说就是正确的结果取决于运气。数据竞争数据竞争是指,如果在访问非final类型的域时没有采用同步来进行协同,那么就会出现竞争。重入由于内置锁是可以重入的,因此如果某个线程试图获得一个已由它自己持有的锁,那么这个请求就会成功。“重入”意味着获取锁的操作的粒度是“线程”,不是“调用”。(这与pthread互斥体的默认加锁行为是 阅读全文
posted @ 2014-01-17 19:21 zhanjindong 阅读(567) 评论(0) 推荐(0) 编辑
TOP