Thread dump portrays what is being done, at a certain point of time, by each thread in a process. While, heap dump is basically a collection of all objects in present in the jvm memory. Thread dump also encases stack trace.
A thread dump is a dump of all live threads at the instant the thread dump is taken. Thus useful for analysing execution problems e.g. thread deadlock.It is used when the server is hung and we want to see the threads executing and take their dump. A heap dump is a JVM facility that generates the dump of the state of the Java heap memory or live objects. Thus useful for analysing some memory issues.