请拒绝使用Thread.stop,Thread.suspend和Thread.resume方法

标签: thread stop thread | 发表时间:2013-03-13 22:01 | 作者:
出处:http://www.iteye.com

 

Thread.stop:这个方法在本质上是不安全的。使用该方法来停掉一个线程将会导致该线程解开它锁住的所有监视器。如果受这些保护的监视器对象之一处于不一致的状态,被破坏的对象对其它线程可见,潜在地导致任意的行为。stop方法的一个替代品是:改变一些变量来表明目标线程是否应该停止运行。目标线程应该定期检查这个变量,如果该变量表明该线程应该停止运行,那么该线程应该从run方法中返回。如果目标线程等待很长一段时间(比如一个条件变量),应该使用interrupt方法来中断该等待。

 

 

Thread.suspend:这个方法本质上有死锁的倾向。如果目标线程拥有一个锁,该锁保护一个临界区。当该线程暂停时,其它线程不能访问该资源,直到目标线程被继续进行(resume)。如果一个线程将要继续进行(resume)目标线程,但如果它试图获取该监视器的锁,而不是调用resume方法,死锁将会发生。此类死锁通常表现为"冻结"进程。

 

Thread.resume:这个方法是和suspend配对使用的,可惜它也是容易产生死锁的。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [thread stop thread] 推荐:

Java Thread多线程

- - CSDN博客推荐文章
Java Thread多线程. Java 多线程例子1 小例子. super("zhuyong");//设置线程的名字,默认为“TestThread”. Java 多线程例子2 前台线程(用户线程) 后台线程(守护线程 ). 1,setDaemon(true)后就是后台线程(守护线程 ),反之就是前台线程(用户线程).

并发之痛 Thread,Goroutine,Actor

- - 午夜咖啡
本文基于我在2月27日Gopher北京聚会演讲整理而成,进行了一些补充以及调整. 投稿给《高可用架构》公众号首发. 聊这个话题之前,先梳理下两个概念,几乎所有讲并发的文章都要先讲这两个概念:. 并发(concurrency) 并发的关注点在于任务切分. 举例来说,你是一个创业公司的CEO,开始只有你一个人,你一人分饰多角,一会做产品规划,一会写代码,一会见客户,虽然你不能见客户的同时写代码,但由于你切分了任务,分配了时间片,表现出来好像是多个任务一起在执行.

关于线程Thread、协程Coroutine、生成器Generator、yield资料

- tangsty - 我的宝贝孙秀楠 ﹣C++, Lua, 大连,程序员
关于Green Thread(绿色环保线程)、Native Thread,以及线程的一些普及问题,下面这个presentation最为翔实. 另外毫无疑问要看看维基百科上的这一条 http://en.wikipedia.org/wiki/Thread_%28computer_science%29. 这一篇教程可以帮助你了解Lua协程的基本用法http://lua-users.org/wiki/CoroutinesTutorial .

在 TDA 工具里看到 Java Thread State 的第一反应是

- - 博客园_旁观者-郑昀
使用 TDA 工具,看到大量 Java Thread State 的第一反应是:. 1,线程状态为“waiting for monitor entry”:. 意味着它  在等待进入一个临界区 ,所以它在”Entry Set“队列中等待. 此时线程状态一般都是 Blocked:. 2,线程状态为“waiting on condition”:.

cassandra节点down机(java.lang.OutOfMemoryError: unable to create new native thread)

- - 大数据、敏捷(改善)
在对集群做压力测试的时候,发现有节点down机,错误信息如下. google后查明原因,由于Linux "max user processes( nproc)"所致,我操作系统的是CentOS 6 64bit,修改方法如下:. ulimit -u # 查看nproc. ulimit -u 65535 # 设置nproc,仅当前会话有效.

三个实例演示 Java Thread Dump 日志分析

- - 博客园_旁观者
jstack Dump 日志文件中的线程状态. dump 文件里,值得关注的线程状态有:. Deadlock(重点关注) . 执行中,Runnable   . Waiting on condition(重点关注) . Waiting on monitor entry(重点关注). 暂停,Suspended.

Nginx线程池性能提升9倍(Thread Pools in NGINX Boost Performance 9x!)

- - SegmentFault 最新的文章
五年级英语水平,端午家庭作业. Nginx以异步、事件驱动的方式处理连接. 传统的方式是每个请求新起一个进程或线程,Nginx没这样做,它通过非阻塞sockets、epoll、kqueue等高效手段,实现一个worker进程处理多个连接和请求. 一般情况下下是一个CPU内核对应一个worker进程,所以worker进程数量固定,并且不多,所以在任务切换上消耗的内存和CPU减少了.

使用Thread Pool不当引发的死锁

- - ImportNew
多线程锁定同一资源会造成死锁. 线程池中的任务使用当前线程池也可能出现死锁. RxJava 或 Reactor 等现代流行库也可能出现死锁. 死锁是两个或多个线程互相等待对方所拥有的资源的情形. 举个例子,线程 A 等待 lock1,lock1 当前由线程 B 锁住,然而线程 B 也在等待由线程 A 锁住的 lock2.