Java多线程中的两个问题
2009-02-10 12:01 乱世文章 阅读(150) 评论(0) 编辑 收藏 举报 <STRONG>Java多线程中的两个问题<BR></STRONG>多线程中thread.stop()被废弃的原因:
<P></P>实现时间差事件的解决办法: 【程序编程相关:<A href="http://www.autohm.com.cn/development/p377/J37746383.shtml" target=_blank>又学到了一个要注意的东西。java与pa</A>】
<P></P>当调用thread.stop()方法时,该线程将释放先前其控制的所有资源,而在线程没有正常执行完毕之前强迫stop之后,这些资源可能处在一种不一致的状态,而这些处于不一致的状态的资源被其他的线程所使用之后,就可能会发生一些意想不到的错误. 【推荐阅读:<A href="http://www.autohm.com.cn/development/p377/J37746382.shtml" target=_blank>配置Middlegen-Hibernat</A>】
<P></P>在主线程中设置一个状态变量,在响应线程执行时,先sleep()一个固定的时间段,之后检查主线程的这个状态,如果这个状态不同就执行不同的操作,或停止执行.<BR>test.java 【程序编程相关:<A href="http://www.autohm.com.cn/development/p377/J37746383.shtml" target=_blank>又学到了一个要注意的东西。java与pa</A>】
<P></P>可以通过回调机制来实现响应线程对主线程变量的查看,例如: 【推荐阅读:<A href="http://www.autohm.com.cn/development/p377/J37746382.shtml" target=_blank>配置Middlegen-Hibernat</A>】
<P></P> private volatile threadtest test; 【扩展信息:<A href="http://www.autohm.com.cn/development/p377/J37746384.shtml" target=_blank>Sun Java 2 Standard </A>】
<P></P>public class test {
<P></P> public boolean flag = true;
<P></P> public test() {
<P></P> test = new threadtest(this);
<P></P> }
<P></P> public static void main(string[] args){
<P></P> test test = new test();
<P></P> test.test.start();
<P></P> test.flag = false;
<P></P> test = null;
<P></P> }
<P></P>}
<P></P>threadtest.java
<P></P>public class threadtest extends thread{
<P></P> test test;
<P></P> public threadtest(test test) {
<P></P> this.test = test;
<P></P> }
<P></P> public void run() {
<P></P> try{
<P></P> sleep(1000);
<P></P> if (test.flag)
<P></P> system.out.println("ive waken up!");
<P></P> }catch(exception e){
<P></P> e.printstacktrace();
<P></P> }
<P></P> }
<P></P>}