2011-10-12 303 views
0

我知道允许进程间通信的概念。我的程序需要启动第二个线程。我知道如何从Java/Android中将数据从一个线程传递或推送到另一个线程,但我没有看到有关“拉取”数据的大量信息。子线程需要经常抓住父线程上的数据。这是如何完成的?我如何从另一个线程或进程中获取数据(Android/Java)

+0

您是否需要比共享内存更多的东西? –

回答

2

由于线程共享内存,您可以使用线程安全的数据结构。一些参考java.util.concurrent。该软件包中的所有内容均专为多线程情况而设计。

就你而言,你可能想要使用LinkedBlockingQueue。通过这种方式,父线程可以将东西放入队列中,并且子线程可以在喜欢的时候抓住它。如果队列为空,它也允许子线程阻塞。

2

您可能会混淆线程和数据。线程是代码执行的行,它可以对某些数据进行操作,但它们本身不是数据,也不包含数据。数据包含在内存中,线程由CPU(或vm或您选择的任何级别)执行。

您以相同的方式访问数据,无论是否在线程中完成。那就是你使用变量或对象字段等。但是对于线程,你需要确保在线程同时访问相同数据时不会出现竞争状态。总之,如果你有一个对象有一个由线程执行的方法,只要你确保只有一个线程同时执行它,你仍然可以以常规的方式从这个对象获取数据。

+0

我认为@ user966005令人困惑的是进程间和进程内而不是数据。 – Merlin

+0

对于我'子线程需要在父线程中获取数据'听起来像是一个用词不当。但除非他澄清,否则肯定很难说出问题所在。 –

相关问题