首页 > 解决方案 > 是否有一种方法可以在线程之间进行通信并交换信息,例如在 java 中的可运行对象中的 getter 方法

问题描述

有没有办法在线程之间进行通信,例如使用 getter 获取变量,因为它们正在不同的线程中更新

例如,如果我在一个可运行的线程中加载图像,如下所示:

Thread t1 = new Thread(new Runnable(){
    public void run(){
     //Ido the loading here
    }
}

有没有一种方法可以与它进行通信,例如获取 var 的值:

Thread t1 = new Thread(new Runnable(){
    public void run(){
     //Ido the loading here
name = "dsad";
    }
public void getName(){ return name }
}

但它没有看到工作

标签: javamultithreading

解决方案


您需要创建一个新的公共类型。使用匿名类意味着没有其他类可以看到它的方法,因为除了Runnable他们可以看到之外没有其他类型。

public class MyTask implements Runnable(){
    private volatile String name;
    public void run(){
     //I do the loading here
         name = "dsad";
    }
    public void getName(){ return name }
}

推荐阅读