How to use shared memory on Java threads?
class, java, multiprocessing, multithreading, shared-memory
Solution
If you do something like:
class MyThreadRunnable implements Runnable {
List<String> strings;
MyThreadRunnable(List<String> strings) {
this.strings = strings;
}
public void run() {
strings.add(getName());
}
}
// ...
List<String> sharedStrings = new ArrayList<String>();
Thread t1 = new Thread(new MyThreadRunnable(sharedStrings));
Thread t2 = new Thread(new MyThreadRunnable(sharedStrings));
t1.start();
t2.start();
then both `t1` and `t2` (two different threads of the same type) will be using the same list, and see changes to it made from the other thread.
Actually, since I'm not using any synchronisation for brevity, it's also possible this would corrupt the list in some unpredictable way and cause weird errors. I strongly encourage you investigate process synchronisation, and the `java.util.concurrent` package when working with concurrency.
Problem
I am implementing a multi-threaded program in Java, where each `thread` is of a type `class Node extends Thread`. All these classes generate certain values which will be used by other classes. For `main` it's easy to get the values from the generated `threads`, but from within `threads` itself, how can I get the values on other `threads`? ``` //Start the threads from a list of objects for (int i = 0; i < lnode.size(); i++) { lnode.get(i).start(); } ``` thanks