Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从线程返回字符串或从线程获取字符串?_Java_Android_Multithreading_Java Threads - Fatal编程技术网

Java 如何从线程返回字符串或从线程获取字符串?

Java 如何从线程返回字符串或从线程获取字符串?,java,android,multithreading,java-threads,Java,Android,Multithreading,Java Threads,我需要从线程中获取一个字符串值,但我没有得到它!全局变量不起作用!你能帮我吗 这是我的密码。我需要使用数据字符串: public class Deserializable { public void execute() { new Thread() { public void run() { String surl = "http://myaddressxxxxx"; HttpURLConnection urlConn

我需要从线程中获取一个字符串值,但我没有得到它!全局变量不起作用!你能帮我吗

这是我的密码。我需要使用
数据字符串

public class Deserializable {

public void execute() {

    new Thread() {

        public void run() {
            String surl = "http://myaddressxxxxx";
            HttpURLConnection urlConnection = null;
            URL url = null;
            try {
                url = new URL(surl);

                urlConnection = (HttpURLConnection) url.openConnection();
                InputStream in = new BufferedInputStream(
                        urlConnection.getInputStream());
                int b = in.read();
                List<Byte> bytes = new LinkedList<Byte>();
                while (b != -1) {
                    bytes.add((byte) b);
                    b = in.read();
                }
                byte[] array = new byte[bytes.size()];
                for (int i = 0; i < bytes.size(); i++) {
                    array[i] = bytes.get(i).byteValue();
                }

                // I need return this String.
                String dataString = new String(array);

            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                urlConnection.disconnect();
            }
        }
    }.start();

}
可反序列化的公共类{
public void execute(){
新线程(){
公开募捐{
字符串surl=”http://myaddressxxxxx";
HttpURLConnection-urlConnection=null;
URL=null;
试一试{
url=新url(surl);
urlConnection=(HttpURLConnection)url.openConnection();
InputStream in=新的BufferedInputStream(
urlConnection.getInputStream());
int b=in.read();
列表字节=新的LinkedList();
而(b!=-1){
字节。添加((字节)b);
b=in.read();
}
byte[]数组=新字节[bytes.size()];
对于(int i=0;i
线程
可以扩展为包含字段,就像您的
数据字符串
一样。这些字段可以从同一线程或不同线程访问,只要它们彼此有引用

public class ThreadA extends Thread {
   public String dataString;

   public void run(){
      ...
      this.dataString = ...;
      ...
   }
}

public class ThreadB extends Thread {

   private final ThreadA ta;

   public ThreadB(ThreadA ta){
      super();
      this.ta = ta;
   }

   public void run(){
      ...
      do something with ta.dataString...
      ...
   }
}
当然,这带来了并发访问字段“代码>数据DATASEIN < /代码>的问题。考虑使用<代码>同步< /代码>,如果这是您的问题。请查看并发的更多信息。

为什么不使用?