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>}
<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>}
相关文章推荐
- Java多线程中的两个问题
- Java多线程中的两个问题
- Java多线程中的两个问题
- Java多线程中的两个问题
- java多线程分发问题——多线程求和
- Java程序员面试中的多线程问题
- java两个站点之间url传中文乱码的问题
- Java中的多线程问题
- 多线程间通信的两个方法:共享变量及管道流 from: JavaEye
- 40个Java多线程问题总结
- java多线程:锁对象Lock-同步问题更完美的处理方式
- 浅谈Java多线程的同步问题
- 编写多线程Java应用程序常见问题
- Java程序员面试中的多线程问题
- Java Tread多线程(2)多线程安全问题
- java基础知识回顾之java Thread类学习(四)--java多线程安全问题(锁)
- java多线程常见问题及基础知识
- 知乎问题:北京,2017,多少k的java web程序员应该懂多线程和jvm优化?
- (4)Java多线程之安全问题-下
- java中多线程安全问题产生&解决方案——同步方法