您的位置:首页 > 编程语言 > Java开发

Java多线程中的两个问题

2009-02-10 12:01 423 查看
<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>}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: