Each time an object is created in java it goes into the area of memory known as Heap. The primitive variables like int and double are allocated in the Stack if they are local method variables and in the heap if they are member vars.
In multithreaded application each thread will have its own stack and will share the same heap.
Stack is threadsafe but the heap is not unless guarded with synchronization thru your code.