如何让一个线程不断跑起来,并且在取到值的时候能返回值而线程能继续跑呢?
我们都知道可以用Callable接口获得线程的返回值,或者触发事件监听来操作返回值,下面我将介绍另一种方法。
- 1 public abstract class Test implements Runnable {
- 2 public String A;
- 3
- 4 //开启线程
- 5 public void run() {
- 6 while(true) {
- 7 //此处写该方法的逻辑代码
- 8
- 9 //listen()方法操作取得值A
- 10 listen(A);
- 11
- 12 }
- 13
- 14 }
- 15
- 16 //定义一个抽象方法listen()
- 17 public abstract void listen(String A);
- 18
- 19 }
这样,线程取到值将存放在抽象方法listen()里,并且线程也将一直跑起来而不会停止。
当我们需要用到这个值时,只需要重写listen()方法就可以啦。
- 1 public class Main {
- 2
- 3 public static void main(String[] args) {
- 4 Thread thread = new Thread(new Test() {
- 5
- 6 @Override
- 7 public void listen(String A) {
- 8 // TODO Auto-generated method stub
- 9
- 10 }
- 11 });
- 12 thread.start();
- 13 }
- 14 }