情况是这样的,我在一个类a中调用了另外两个类b和c,先调用了继承线程的类b,只有一个线程,然后接着调用了类c,这样就出问题了,因为类c需要类b线程运行完后的结果,但是程序在b的线程还没有运行完时就开始运行类c了,这样就导致了c没有需要的数据,并引发了错误,请各位大大帮忙解决下。说的思路如何搞啊?
哎,我的想法可能有些偏离线程的主题了,要么都用线程,要么不用,谢谢大家了!
如果把A也做成线程的话好像不太可能,其实a是一个actionform具体用来操作文件转换的,b类转换一种格式,然后再用c类接着转换成另一种格式,由于b类需要用到一个服务,由于服务是线程不安全的所以启动了线程,而c类只是调用了process引用本地程序而已,如果没有其他方法的话a,b,c
类估计都要继承Thread类才能解决问题,或者除非b不用线程。所以我想能不能有其他的办法。
B类发个执行成功的状态给A,如何?
追问这种方式我也想过,但是正如1楼说的线程(Thread)是一份独立运行的程序,那么在xxx.start()方法执行的时候加入下面还有其他代码,那么代码还会继续运行的,它不会等待返回值的,如果用一个返回状态来进行if判断那么那么if永远不会被执行会直接跳过的不管是success还是false。我那种想法可能要求过分了点,还是另想其他实现功能的办法的了,不过还是谢谢你。
本回答被提问者采纳java中请问如何等待一个线程结束在运行其他的代码?
在a的代码中:b.start();\/\/启动b线程 synchronized(b) b.wait();\/\/a线程中采用同步,并进行等待 c.execute();在b线程结束时调用synchronized(this) notify();这样就可以达到b不结束,a线程就不会继续执行c。注释:如果看不明白建议先学习一下java线程同步机制。
求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的...
stop():强迫线程停止执行。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。yield()只是使当前线程重新回到可...
在java中什么办法可以让线程停止然后再重新启动它
1.你可以用布尔值来控制是否让线程运行。例:while(boolean isLive){} 当isLive为true线程就运行,否则不运行。2.你可以用对象。例:while(Object o != null)当对象存在的时候线程就运行,否则不运行!3.你可以用wait()方法来让线程等待,然后用notify()、notifyAll()在适当的时候唤醒线程、或者...
java怎么等待一段时间再执行下一步?
逐渐亮的话就是做个效果方法,改变按钮c的亮度,然后不用Thread.sleep()而使用timer计时器每格100毫秒改变下亮度,只到达到一般亮度为止。
java 线程当前任务未执行完毕,会执行一个新的任务吗?
在 Java 中,当一个线程正在执行任务时,如果另一个任务需要执行,则会根据线程的调度策略决定是否执行新的任务。如果线程的调度策略是单线程执行,则线程会一直执行当前任务,直到完成为止,不会执行新的任务。如果线程的调度策略是多线程执行,则线程可能会在执行完当前任务后,执行新的任务。Java 中的...
如何在Java中执行其它程序
导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。 通过该类提供的方法,可以实现与启动的进程之间通信,达到交互的目的。 3、从标准输出和错误输出流读取信息 从启动其他程序的Java进程看,已启动的其他程序输出就是一个普通的输入流,可以通过getInputStream()和getErrorStream来获取。 对于一般...
如何实现Java线程的暂停和重新启用?
1.新建(NEW):新创建了一个线程对象。2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码...
java线程关闭时会执行结束线程的方法吗
在Java服务正常关闭或重启时,未执行完的线程会被中止。但是,这并不意味着线程会立即终止或丢失。在一个正常关闭或重启的过程中,Java虚拟机会尝试以一种安全的方式停止所有的线程。正常关闭:当你调用System.exit()或者通过其他方式(例如:在Spring Boot应用中使用\/shutdown端点)正常关闭应用时,Java...
Java中如何停止一个线程
在上面代码中定义了一个退出标志exit,当exit为true时,while循环退出,exit的默认值为false.在定义exit时,使用了一个Java关键字volatile,这个关键字的目的是使exit同步,也就是说在同一时刻只能由一个线程来修改exit的值, 2. 使用stop方法终止线程 使用stop方法可以强行终止正在运行或挂起的线程。我们...
Java中如何终止运行中的线程?while(true){i++;}死循环是如何跳出的?
Java中,终止线程通常意味着在线程处理任务完成之前停止当前操作。有三种方法可以终止正在运行的线程:首先,可以使用volatile标志位。创建一个Runnable接口的实现类,其中定义一个volatile标志位,利用这个标志位控制线程的运行。在main方法中创建线程,适当时候修改标志位以终止线程。其次,可以使用interrupt()方法...