Friday, 2 August 2013

Java/Core Java Interview question: - What are native threads, working thread and green thread?

Native Threads: -
  • Native threads use the operating system's native ability to manage multi-threaded processes - in particular, they use the pthread library
  • The kernel schedules and manages the various threads that make up the process

Working Thread: - 
  • In working thread scheme, allocates one thread to execute one task.
  • When the task is complete, the thread may return to a thread pool for later use. In this scheme a thread may execute arbitrary tasks, which are passed in the form of a Runnable method argument, typically execute()
  • The runnable tasks are usually stored in a queue until a thread host is available to run them.
  • The worker thread design pattern is usually used to handle many concurrent tasks where it is not important which finishes first and no single task needs to be coordinated with another. The task queue controls how many threads run concurrently to improve the overall performance of the system. However, a worker thread framework requires relatively complex programming to set up, so should not be used where simpler threading techniques can achieve similar results.

Green Thread: - 
  • A green thread refers to a mode of operation for the Java Virtual Machine (JVM) in which all code is executed in a single operating system thread. If the Java program has any concurrent threads, the JVM manages multi-threading internally rather than using other operating system threads
  • There is a significant processing overhead for the JVM to keep track of thread states and swap between them, so green thread mode has been deprecated and removed from more recent Java implementations. Current JVM implementations make more efficient use of native operating system threads

Also see the following Java video on Google Window Toolkit (GWT).

Wednesday, 24 April 2013

Java interview questions and answers: - We have return in the try block, will finally block execute?

Let us first try to understand this Java interview question. You can see below is a simple Java code which where in we have put a return statement in the try block. So the question is will finally block execute.

public static void main(String[] args)
                  int i=0;
                  // will the control come here
                  int z=0;

The answer is Yes Finally block will execute irrespective there is return or there are no return statements. That’s why finally block is the best place to put clean up code.