Skip to content

threads

Akash Sahoo edited this page Jan 27, 2016 · 6 revisions

Java Thread

Process & Threads

Process An executing instance of a program is called process. Each process provides the resources needed to execute a program. A process has a virtual address space, executable code, open handles to system objects, a security context, a unique process identifier, environment variables, a priority class, minimum and maximum working set sizes, and at least one thread of execution. Each process is started with a single thread, often called the primary thread, but can create additional threads from any of its threads.

Thread A thread is the entity within a process that can be scheduled for execution. All threads of a process share its virtual address space and system resources. In addition, each thread maintains exception handlers, a scheduling priority, thread local storage, a unique thread identifier, and a set of structures the system will use to save the thread context until it is scheduled. The thread context includes the thread's set of machine registers, the kernel stack, a thread environment block, and a user stack in the address space of the thread's process. Threads can also have their own security context, which can be used for impersonating clients.

Threads VS Process

Both processes and threads are independent sequences of execution. The typical difference is that threads (of the same process) run in a shared memory space, while processes run in separate memory spaces. Threads and process have their separate private run time stack but all threads see the same dynamic memory heap. *Stackoverflow

Multitasking & Multithreading

Multitasking refers to computer's ability to perform multiple jobs concurrently. Thread is a sequence of execution within a program. Multithread refers to multiple threads of control within a single program.(eg chrome tabs - thread. Chrome is process. Threads are a sub part of process)

Thread Advantages

  • Maintain responsiveness of application
  • Cancellation of sub tasks without crashing the process
  • Parallel execution
  • Monitor status of some resources
  • Some API and systems demand it eg Swing

Creating Threads

  • Sub classing the Thread class and instantiating a new object of that class
  • Implementing the Runnable interface

In both cases run() method should be implemented

DEMOS

https://github.com/CourseReps/ECEN489-Spring2016/tree/master/Students/akashatnitr/tutorial/JavaThreads/src

Demo1

Demo2

Demo3

Demo4

Clone this wiki locally