Top Fifty Coffee Thread Interview Questions Answers For Experienced
You move to whatever Java interview, senior or junior, sense or freshers, you are leap to reckon a duo of questions from the thread, concurrency, as well as multi-threading. In fact, this built-in concurrency back upwardly is i of the strongest points of Java programming linguistic communication as well as helped it to gain popularity amidst enterprise footing as well as programmers equally. Most of lucrative Java developer seat demands excellent marrow Java multi-threading skills and sense inwards developing, debugging as well as tuning high-performance depression latency concurrent Java applications. This is the reason, it is i of the most sought after science on Java interviews. The multithreading as well as concurrency are also hard to master copy concept as well as solely proficient developers alongside company sense tin displace effectively bargain alongside concurrency issues.
In a typical Java interview, Interviewer tardily starts from basic concepts of Thread past times asking questions like, why yous demand threads, how to do threads, which i is meliorate way to do threads e.g. by extending thread cast or implementing Runnable and as well as then tardily goes into Concurrency issues, challenges faced during evolution of concurrent Java applications, Java retentiveness model, higher-order concurrency utilities introduced inwards JDK 1.5, principles as well as pattern patterns of concurrent Java applications, classical multi-threading problems e.g. producer-consumer, dining philosopher, reader-writer or exactly bounded buffer problems.
Since its also non plenty exactly to know basics of threading, yous must know how to bargain alongside concurrency problems e.g. deadlock, race conditions, retentiveness inconsistency as well as diverse thread security related issues. These skills are thoroughly acquire tested past times presenting diverse multi-threading as well as concurrency problems.
Many Java developers are used to solely facial expression as well as read interview questions before going for the interview, which is non bad but yous should non live besides far away. Also collecting questions as well as going through the same exercise is besides much fourth dimension consuming, that's why I have got created this listing of top 50 Java multi-threading as well as concurrency related questions, collected from diverse interviews. I am solely going to add together novel as well as recent interview questions as as well as when I am going to uncovering them.
Though yous demand proficient noesis as well as company sense to do good on Java interviews focused on advanced multithreading as well as concurrency skill, I strongly recommend Java programmers to read Effective Java as well as Java Concurrency inwards Practice twice before going to interview. They do non solely assist yous to respond questions meliorate but also assist yous to nowadays your thought clearly.
By the way, I have got non provided answers to some questions here, Why? because I hold off most of Java developer to know the answers to this interrogation as well as if not, also answers are widely available past times using Google. If yous don't uncovering the respond to whatever exceptional question, yous tin displace ever inquire me inwards the comments section. You tin displace fifty-fifty uncovering answers to few questions on the link provided or my before post Top 12 Java Thread Questions alongside Answers.
1) What is Thread inwards Java? (answer)
The thread is an independent path of execution. It's way to direct payoff of multiple CPU available inwards a machine. By employing multiple threads yous tin displace speed upwardly CPU leap task. For example, if i thread takes 100 milliseconds to do a job, yous tin displace piece of work 10 thread to cut back that project into 10 milliseconds. Java provides fantabulous back upwardly for multithreading at the linguistic communication level, as well as it's also i of the strong selling points.
2) What is the divergence betwixt Thread as well as Process inwards Java? (answer)
The thread is a subset of Process, inwards other words, i procedure tin displace comprise multiple threads. Two procedure runs on dissimilar retentiveness space, but all threads percentage same retentiveness space. Don't confuse this alongside stack memory, which is dissimilar for the dissimilar thread as well as used to shop local information to that thread. For to a greater extent than exceptional reckon the answer.
3) How do yous implement Thread inwards Java? (answer)
At the linguistic communication level, at that spot are ii ways to implement Thread inwards Java. An instance of java.lang.Thread stand upwardly for a thread but it needs a project to execute, which is an instance of interface java.lang.Runnable. Since Thread class itself implement Runnable, yous tin displace override run() method either past times extending Thread cast or exactly implementing Runnable interface. For detailed respond as well as give-and-take reckon this article.
4) When to piece of work Runnable vs Thread inwards Java? (answer)
This is a follow-up of previous multi-threading interview question. As nosotros know nosotros tin displace implement thread either past times extending Thread class or implementing Runnable interface, the interrogation arise, which i is meliorate as well as when to piece of work one? This interrogation volition live like shooting fish in a barrel to respond if yous know that Java programming linguistic communication doesn't back upwardly multiple inheritances of class, but it allows yous to implement multiple interfaces. Which means, it's meliorate to implement Runnable then extends Thread if yous also desire to extend some other cast e.g. Canvas or CommandListener. For to a greater extent than points as well as give-and-take yous tin displace also refer this post.
6) What is the divergence betwixt start() as well as run() method of Thread class? (answer)
One of play a joke on Java interrogation from early on days, but notwithstanding proficient plenty to differentiate betwixt shallow agreement of Java threading model start() method is used to start newly created thread, piece start() internally calls run() method, at that spot is divergence calling run() method directly. When yous invoke run() as normal method, its called inwards the same thread, no novel thread is started, which is the instance when yous telephone outcry upwardly start() method. Read this answer for much to a greater extent than detailed discussion.
7) What is the divergence betwixt Runnable as well as Callable inwards Java? (answer)
Both Runnable as well as Callable stand upwardly for project which is intended to live executed inwards a separate thread. Runnable is at that spot from JDK 1.0 piece Callable was added on JDK 1.5. Main divergence betwixt these ii is that Callable's call() method tin displace render value as well as throw Exception, which was non possible alongside Runnable's run() method. Callable render Future object, which tin displace agree the final result of computation. See my blog post on the same theme for a to a greater extent than in-depth respond to this question.
8) What is the divergence betwixt CyclicBarrier as well as CountDownLatch inwards Java? (answer)
Though both CyclicBarrier as well as CountDownLatch hold off for number of threads on i or to a greater extent than events, the primary divergence betwixt them is that yous tin displace non re-use CountDownLatch once count reaches to zero, but yous tin displace reuse same CyclicBarrier even after barrier is broken. See this answer for few to a greater extent than points as well as sample code example.
9) What is Java Memory model? (answer)
Java Memory model is laid of rules as well as guidelines which allows Java programs to conduct deterministically across multiple retentiveness architecture, CPU, as well as operating system. It's especially of import inwards instance of multi-threading. Java Memory Model provides some guarantee on which changes made past times i thread should live visible to others, i of them is happens-before relationship. This human relationship defines several rules which allows programmers to anticipate as well as argue behaviour of concurrent Java programs. For example, happens-before human relationship guarantees :
10) What is volatile variable inwards Java? (answer)
volatile is a special modifier, which tin displace solely live used alongside instance variables. In concurrent Java programs, changes made past times multiple threads on instance variables is non visible to other inwards absence of whatever synchronizers e.g. synchronized keyword or locks. Volatile variable guarantees that a write volition occur before whatever subsequent read: as stated: "volatile variable rule" inwards previous question. Read this answer to larn to a greater extent than close volatile variable as well as when to piece of work them.
11) What is thread-safety? is Vector a thread-safe class? (Yes, reckon details)
Thread-safety is a belongings of an object or code which guarantees that if executed or used past times multiple threads inwards whatever mode e.g. read vs write it volition conduct as expected. For example, a thread-safe counter object volition non immature lady whatever count if same instance of that counter is shared amidst multiple threads. Apparently, yous tin displace also split upwardly collection classes inwards ii category, thread-safe as well as non-thread-safe. Vector is indeed a thread-safe cast as well as it achieves thread-safety past times synchronizing methods which modify state of Vector, on the other hand, its counterpart ArrayList is non thread-safe.
12) What is race status inwards Java? Given i example? (answer)
Race status are displace of some subtle programming bugs when Java programs are exposed to concurrent execution environment. As the mention suggests, a race status occurs due to race betwixt multiple threads, if a thread which is supposed to execute offset lost the race as well as executed second, behaviour of code changes, which surface as non-deterministic bugs. This is i of the hardest bugs to uncovering as well as re-produce because of random nature of racing betwixt threads. One instance of race status is out-of-order processing, reckon this answer for some to a greater extent than instance of race weather inwards Java programs.
13) How to halt a thread inwards Java? (answer(answer)
I ever said that Java provides rich APIs for everything but ironically Java doesn't supply a sure enough shot way of stopping thread. There was some command methods inwards JDK 1.0 e.g. stop(), suspend() as well as resume() which was deprecated inwards after releases due to potential deadlock threats, from as well as then Java API designers has non made whatever seek to supply a consistent, thread-safe as well as elegant way to halt threads. Programmers mainly rely on the fact that thread stops automatically as shortly as they goal execution of run() or call() method. To manually stop, programmers either direct payoff of volatile boolean variable as well as banking concern check inwards every iteration if run method has loops or interrupt threads to abruptly cancel tasks. See this tutorial for sample code of stopping thread inwards Java.
14) What happens when an Exception occurs inwards a thread? (answer)
This is i of the proficient tricky Java question I have got seen inwards interviews. In uncomplicated words, If non caught thread volition die, if an uncaught exception handler is registered as well as then it volition acquire a telephone outcry upwardly back. Thread.UncaughtExceptionHandler is an interface, defined as nested interface for handlers invoked when a Thread abruptly terminates due to an uncaught exception. When a thread is close to terminate due to an uncaught exception the Java Virtual Machine volition query the thread for its UncaughtExceptionHandler using Thread.getUncaughtExceptionHandler() as well as volition invoke the handler's uncaughtException() method, passing the thread as well as the exception as arguments.
15) How do yous percentage information betwixt ii thread inwards Java? (answer)
You tin displace percentage information betwixt threads past times using shared object, or concurrent information construction similar BlockingQueue. See this tutorial to learn inter-thread communication inwards Java. It implements Producer consumer pattern using hold off as well as notify methods, which involves sharing objects betwixt ii threads.
16) What is the divergence betwixt notify as well as notifyAll inwards Java? (answer)
This is some other tricky questions from marrow Java interviews, since multiple threads tin displace hold off on unmarried monitor lock, Java API designer provides method to inform solely i of them or all of them, i time waiting status changes, but they supply one-half implementation. There notify() method doesn't supply whatever way to direct a exceptional thread, that's why its solely useful when yous know that at that spot is solely i thread is waiting. On the other hand, notifyAll() sends notification to all threads as well as allows them to compete for locks, which ensures that at-least i thread volition hold further. See my blog post on similar theme for a to a greater extent than detailed respond as well as code example.
17) Why wait, notify as well as notifyAll are non within thread class? (answer)
This is a pattern related question, which checks what candidate thinks close existing organisation or does he ever thought of something which is thence mutual but looks in-appropriate at first. In gild to respond this question, yous have got to give some reasons why it brand sense for these 3 method to live inwards Object class, as well as why non on Thread class. One argue which is obvious is that Java provides lock at object degree non at thread level. Every object has lock, which is acquired past times thread. Now if thread needs to hold off for sure enough lock it brand sense to telephone outcry upwardly wait() on that object rather than on that thread. Had wait() method declared on Thread class, it was non clear that for which lock thread was waiting. In short, since wait, notify as well as notifyAll operate at lock level, it brand sense to defined it on object cast because lock belongs to object. You tin displace also reckon this article for to a greater extent than elaborate respond of this question.
18) What is ThreadLocal variable inwards Java? (answer)
ThreadLocal variables are special sort of variable available to Java programmer. Just similar instance variable is per instance, ThreadLocal variable is per thread. It's a prissy way to accomplish thread-safety of expensive-to-create objects, for instance yous tin displace brand SimpleDateFormat thread-safe using ThreadLocal. Since that cast is expensive, its non proficient to piece of work it inwards local scope, which requires separate instance on each invocation. By providing each thread their ain copy, yous shoot ii birds alongside i arrow. First, yous cut back number of instance of expensive object past times reusing fixed number of instances, as well as Second, yous accomplish thread-safety without paying toll of synchronization or immutability. Another proficient instance of thread local variable is ThreadLocalRandom class, which reduces number of instances of expensive-to-create Random object inwards multi-threading environment. See this answer to larn to a greater extent than close thread local variables inwards Java.
19) What is FutureTask inwards Java? (answer)
FutureTask represents a cancellable asynchronous computation inwards concurrent Java application. This cast provides a base of operations implementation of Future, alongside methods to start as well as cancel a computation, query to reckon if the computation is complete, as well as remember the final result of the computation. The final result tin displace solely live retrieved when the computation has completed; the acquire methods volition block if the computation has non yet completed. A FutureTask object tin displace live used to wrap a Callable or Runnable object. Since FutureTask also implements Runnable, it tin displace live submitted to an Executor for execution.
20) What is the divergence betwixt the interrupted() as well as isInterrupted() method inwards Java? (answer)
Main divergence betwixt interrupted() as well as isInterrupted() is that erstwhile clears the interrupt status piece after does not. The interrupt machinery inwards Java multi-threading is implemented using an internal flag known as the interrupt status. Interrupting a thread past times calling Thread.interrupt() sets this flag. When interrupted thread checks for an interrupt past times invoking the static method Thread.interrupted(), interrupt status is cleared. The non-static isInterrupted() method, which is used past times i thread to query the interrupt status of another, does non alter the interrupt status flag. By convention, whatever method that exits past times throwing an InterruptedException clears interrupt status when it does so. However, it's ever possible that interrupt status volition directly live laid again, past times some other thread invoking interrupt
21) Why hold off as well as notify method are called from synchronized block? (answer)
Main argue for calling hold off as well as notify method from either synchronized block or method is that it made mandatory past times Java API. If yous don't telephone outcry upwardly them from synchronized context, your code volition throw IllegalMonitorStateException. H5N1 to a greater extent than subtle argue is to avoid the race status betwixt hold off as well as notify calls. To larn to a greater extent than close this, banking concern check my similarly titled post here.
22) Why should yous banking concern check status for waiting inwards a loop? (answer)
Its possible for a waiting thread to have faux alerts as well as spurious wake upwardly calls, if it doesn't banking concern check the waiting status inwards loop, it volition exactly leave of absence fifty-fifty if status is non met. As such, when a waiting thread wakes up, it cannot assume that the state it was waiting for is notwithstanding valid. It may have got been valid inwards the past, but the state may have got been changed after the notify() method was called as well as before the waiting thread woke up. That's why it ever meliorate to telephone outcry upwardly wait() method from loop, yous tin displace fifty-fifty do template for calling hold off as well as notify inwards Eclipse. To larn to a greater extent than close this question, I would recommend yous to read Effective Java items on thread as well as synchronization.
23) What is the divergence betwixt synchronized as well as concurrent collection inwards Java? (answer)
Though both synchronized as well as concurrent collection provides thread-safe collection suitable for multi-threaded as well as concurrent access, after is to a greater extent than scalable than former. Before Java 1.5, Java programmers solely had synchronized collection which becomes rootage of argument if multiple thread access them concurrently, which hampers scalability of system. Java five introduced concurrent collections similar ConcurrentHashMap, which non solely provides thread-safety but also improves scalability past times using modern techniques similar lock stripping as well as partitioning internal table. See this answer for to a greater extent than differences betwixt synchronized as well as concurrent collection inwards Java.
24) What is the divergence betwixt Stack as well as Heap inwards Java? (answer)
Why does someone this interrogation as business office of multi-threading as well as concurrency? because Stack is a retentiveness expanse which is closely associated alongside threads. To respond this question, both stack as well as heap are specific memories inwards Java application. Each thread has their ain stack, which is used to shop local variables, method parameters as well as telephone outcry upwardly stack. Variable stored inwards i Thread's stack is non visible to other. On some other hand, the heap is a mutual retentiveness expanse which is shared past times all threads. Objects whether local or at whatever degree is created within heap. To improve performance thread tends to cache values from heap into their stack, which tin displace do problems if that variable is modified past times to a greater extent than than i thread, this is where volatile variables come upwardly into the picture. volatile advise threads read the value of variable ever from primary memory. See this article for learning to a greater extent than close stack as well as heap inwards Java to respond this interrogation inwards greater detail.
25) What is thread pool? Why should yous thread puddle inwards Java? (answer)
Creating thread is expensive inwards damage of fourth dimension as well as resource. If yous do thread at fourth dimension of asking processing it volition deadening downward your response time, also at that spot is solely a express number of threads a procedure tin displace create. To avoid both of these issues, a puddle of thread is created when application starts-up as well as threads are reused for asking processing. This puddle of thread is known as "thread pool" as well as threads are known as worker thread. From JDK 1.5 release, Java API provides Executor framework, which allows yous to do dissimilar types of thread pools e.g. unmarried thread pool, which procedure i project at a time, fixed thread puddle (a puddle of fixed number of threads) or cached thread puddle (an expandable thread puddle suitable for applications alongside many brusk lived tasks). See this article to learn to a greater extent than close thread pools inwards Java to prepare detailed respond of this question.
26) Write code to solve Producer Consumer work inwards Java? (answer)
Most of the threading work yous solved inwards the existent footing are of the category of Producer consumer pattern, where i thread is producing project as well as some other thread is consuming that. You must know how to do inter thread communication to solve this problem. At the lowest level, yous tin displace piece of work hold off as well as notify to solve this problem, as well as at a high level, yous tin displace leverage Semaphore or BlockingQueue to implement Producer consumer pattern, as shown inwards this tutorial.
27) How do yous avoid deadlock inwards Java? Write Code?
Deadlock is a status inwards which ii threads hold off for each other to direct activity which allows them to displace further. It's a serious number because when it occur your programme hangs as well as doesn't do the project it is intended for. In gild for deadlock to happen, next iv weather must live true:
The easiest way to avoid deadlock is to preclude Circular wait, as well as this tin displace live done past times acquiring locks inwards a exceptional gild as well as releasing them inwards opposite gild thence that a thread tin displace solely hold to acquire a lock if it held the other one. Check this tutorial for the actual code instance as well as detailed give-and-take on techniques for avoiding deadlock inwards Java.
28) What is the divergence betwixt livelock as well as deadlock inwards Java? (answer)
This interrogation is extension of previous interview question. H5N1 livelock is similar to a deadlock, except that the states of the threads or processes involved inwards the livelock constantly alter alongside regard to i another, without whatever i progressing further. Livelock is a special instance of resources starvation. H5N1 real-world instance of livelock occurs when ii people run across inwards a narrow corridor, as well as each tries to live polite past times moving aside to permit the other pass, but they halt upwardly swaying from side to side without making whatever progress because they both repeatedly displace the same way at the same time. In short, the primary divergence betwixt livelock as well as deadlock is that inwards erstwhile state of procedure alter but no progress is made.
29) How do yous banking concern check if a Thread holds a lock or not? (answer)
I didn't fifty-fifty know that yous tin displace banking concern check if a Thread already holds lock before this interrogation hits me inwards a telephonic circular of Java interview. There is a method called holdsLock() on java.lang.Thread, it returns truthful if as well as solely if the electrical flow thread holds the monitor lock on the specified object. You tin displace also banking concern check this article for the to a greater extent than detailed answer.
30) How do yous direct thread dump inwards Java? (answer)
There are multiple ways to direct thread dump of Java procedure depending upon operating system. When yous direct thread dump, JVM dumps state of all threads inwards log files or criterion fault console. In windows yous tin displace piece of work Ctrl + Break fundamental combination to direct thread dump, on Linux yous tin displace piece of work kill -3 command for same. You tin displace also piece of work a tool called jstack for taking thread dump, it operate on procedure id, which tin displace live constitute using some other tool called jps.
31) Which JVM parameter is used to command stack size of a thread? (answer)
This is the uncomplicated one, -Xss parameter is used to command stack size of Thread inwards Java. You tin displace reckon this list of JVM options to larn to a greater extent than close this parameter.
32) What is the divergence betwixt synchronized as well as ReentrantLock inwards Java? (answer)
There were days when the solely way to supply mutual exclusion inwards Java was via synchronized keyword, but it has several shortcomings e.g. yous tin displace non extend lock beyond a method or block boundary, yous tin displace non surrender trying for a lock etc. Java five solves this work past times providing to a greater extent than sophisticated command via Lock interface. ReentrantLock is a mutual implementation of Lock interface as well as provides re-entrant mutual exclusion Lock alongside the same basic demeanour as well as semantics as the implicit monitor lock accessed using synchronized methods as well as statements, but alongside extended capabilities. See this article larn close those capabilities as well as some to a greater extent than differences betwixt synchronized vs ReentrantLock inwards Java.
33) There are 3 threads T1, T2, as well as T3? How do yous ensure sequence T1, T2, T3 inwards Java? (answer)
Sequencing inwards multi-threading tin displace live achieved past times dissimilar way but yous tin displace exactly piece of work the join() method of thread cast to start a thread when some other i has finished its execution. To ensure 3 threads execute yous demand to start the in conclusion i offset e.g. T3 as well as and then telephone outcry upwardly bring together methods inwards opposite gild e.g. T3 calls T2. bring together as well as T2 calls T1.join, these ways T1 volition goal offset as well as T3 volition goal last. To larn to a greater extent than close bring together method, reckon this tutorial.
34) What does yield method of Thread cast do? (answer)
Yield method is i way to asking electrical flow thread to relinquish CPU thence that other thread tin displace acquire a jeopardy to execute. Yield is a static method as well as solely guarantees that electrical flow thread volition relinquish the CPU but doesn't say anything close which other thread volition acquire CPU. Its possible for the same thread to acquire CPU dorsum as well as start its execution again. See this article to larn to a greater extent than close yield method and to respond this interrogation better.
35) What is the concurrency degree of ConcurrentHashMap inwards Java? (answer)
ConcurrentHashMap achieves it's scalability as well as thread-safety past times partitioning actual map into a number of sections. This partitioning is achieved using concurrency level. Its optional parameter of ConcurrentHashMap constructor as well as it's default value is 16. The tabular array is internally partitioned to seek to permit the indicated number of concurrent updates without contention. To larn to a greater extent than close concurrency degree as well as internal resizing, reckon my post How ConcurrentHashMap industrial plant inwards Java.
36) What is Semaphore inwards Java? (answer)
Semaphore inwards Java is a novel sort of synchronizer. It's a counting semaphore. Conceptually, a semaphore maintains a laid of permits. Each acquire() blocks if necessary until a permit is available, as well as and then takes it. Each release() adds a permit, potentially releasing a blocking acquirer. However, no actual permit objects are used; the Semaphore exactly keeps a count of the number available as well as acts accordingly. Semaphore is used to protect an expensive resources which is available inwards fixed number e.g. database connectedness inwards the pool. See this article to larn to a greater extent than close counting Semaphore inwards Java.
37) What happens if yous submit a project when the queue of the thread puddle is already filled? (answer)
This is some other tricky interrogation on my list. Many programmers volition think that it volition block until a project is cleared but its true. ThreadPoolExecutor's submit() method throws RejectedExecutionException if the project cannot live scheduled for execution.
38) What is the divergence betwixt the submit() as well as execute() method thread puddle inwards Java? (answer)
Both methods are ways to submit a project to thread pools but at that spot is a slight divergence betwixt them. execute(Runnable command) is defined inwards Executor interface as well as executes given project inwards future, but to a greater extent than importantly, it does non render anything. Its render type is void. On other mitt submit() is an overloaded method, it tin displace direct either Runnable or Callable project as well as tin displace render Future object which tin displace agree the pending final result of computation. This method is defined on ExecutorService interface, which extends Executor interface, as well as every other thread puddle cast e.g. ThreadPoolExecutor or ScheduledThreadPoolExecutor gets these methods. To larn to a greater extent than close thread pools yous tin displace banking concern check this article.
39) What is blocking method inwards Java? (answer)
H5N1 blocking method is a method which blocks until the project is done, for example, accept() method of ServerSocket blocks until a customer is connected. hither blocking way command volition non render to the caller until the project is finished. On the other hand, at that spot is an asynchronous or non-blocking method which returns fifty-fifty before the project is finished. To larn to a greater extent than close blocking method reckon this answer.
40) Is Swing thread-safe? What do yous hateful past times Swing thread-safe? (answer)
You tin displace exactly this interrogation as No, Swing is non thread-safe, but yous have got to explicate what yous hateful past times that fifty-fifty if the interviewer doesn't inquire close it. When nosotros say swing is non thread-safe nosotros usually refer its component, which tin displace non live modified inwards multiple threads. All update to GUI components has to live done on AWT thread, as well as Swing provides synchronous as well as asynchronous callback methods to schedule such updates. You tin displace also read my article to larn to a greater extent than close swing as well as thread-safety to meliorate respond this question. Even adjacent ii questions are also related to this concept.
41) What is the divergence betwixt invokeAndWait as well as invokeLater inwards Java? (answer)
These are ii methods Swing API provides Java developers for updating GUI components from threads other than Event dispatcher thread. InvokeAndWait() synchronously update GUI component, for example, a progress bar, i time progress is made, the bar should also live updated to reverberate that change. If progress is tracked inwards a dissimilar thread, it has to telephone outcry upwardly invokeAndWait() to schedule an update of that ingredient past times Event dispatcher thread. On some other hand, invokeLater() is an asynchronous telephone outcry upwardly to update components. You tin displace also refer this answer for to a greater extent than points.
42) Which method of Swing API are thread-safe inwards Java? (answer)
This interrogation is over again related to swing as well as thread-safety though components are non thread-safe at that spot is a sure enough method which tin displace live safely called from multiple threads. I know close repaint(), as well as revalidate() beingness thread-safe but at that spot are other methods on dissimilar swing components e.g. setText() method of JTextComponent, insert() as well as append() method of JTextArea class.
43) How to do an Immutable object inwards Java? (answer)
This interrogation powerfulness non facial expression related to multi-threading as well as concurrency, but it is. Immutability helps to simplify already complex concurrent code inwards Java. Since immutable object tin displace live shared without whatever synchronization its rattling love to Java developers. Core value object, which is meant to live shared amidst thread should live immutable for performance as well as simplicity. Unfortunately at that spot is no @Immutable tone inwards Java, which tin displace brand your object immutable, hard piece of work must live done past times Java developers. You demand to hold basics similar initializing state inwards constructor, no setter methods, no leaking of reference, keeping separate re-create of mutable object to do Immutable object. For measurement past times measurement guide reckon my post, how to brand an object Immutable inwards Java. This volition give yous plenty cloth to respond this interrogation alongside confidence.
44) What is ReadWriteLock inwards Java? (answer)
In general, read write lock is the final result of lock stripping technique to improve the performance of concurrent applications. In Java, ReadWriteLock is an interface which was added inwards Java five release. A ReadWriteLock maintains a pair of associated locks, i for read-only operations as well as i for writing. The read lock may live held simultaneously past times multiple reader threads, thence long as at that spot are no writers. The write lock is exclusive. If yous desire yous tin displace implement this interface alongside your ain laid of rules, otherwise yous tin displace use ReentrantReadWriteLock, which comes along alongside JDK as well as supports a maximum of 65535 recursive write locks as well as 65535 read locks.
45) What is busy spin inwards multi-threading? (answer)
Busy spin is a technique which concurrent programmers employ to brand a thread hold off on sure enough condition. Unlike traditional methods e.g. wait(), sleep() or yield() which all involves relinquishing CPU control, this method does non relinquish CPU, instead it the exactly runs empty loop. Why would someone do that? to save CPU caches. In a multi-core system, it's possible for a paused thread to resume on a dissimilar core, which way rebuilding cache again. To avoid toll of rebuilding cache, programmer prefer to hold off for much smaller fourth dimension doing busy spin. You tin displace also reckon this answer to larn to a greater extent than close this question.
46) What is the divergence betwixt the volatile as well as atomic variable inwards Java? (answer)
This is an interesting interrogation for Java programmer, at first, volatile as well as atomic variable facial expression rattling similar, but they are different. Volatile variable provides yous happens-before guarantee that a write volition occur before whatever subsequent write, it doesn't guarantee atomicity. For instance count++ functioning volition non acquire atomic exactly past times declaring count variable as volatile. On the other mitt AtomicInteger class provides atomic method to perform such chemical compound functioning atomically e.g. getAndIncrement() is atomic replacement of increment operator. It tin displace live used to atomically increment electrical flow value past times one. Similarly yous have got atomic version for other information type as well as reference variable as well.
47) What happens if a thread throws an Exception within synchronized block? (answer)
This is i to a greater extent than tricky interrogation for average Java programmer, if he tin displace convey the fact close whether lock is released or non is a fundamental indicator of his understanding. To respond this question, no affair how yous be synchronized block, either usually past times finishing execution or abruptly past times throwing exception, thread releases the lock it acquired piece entering that synchronized block. This is genuinely i of the reasons I similar synchronized block over lock interface, which requires explicit attending to unloose lock, by as well as large this is achieved past times releasing the lock inwards a finally block.
48) What is double checked locking of Singleton? (answer)
This is i of the rattling pop interrogation on Java interviews, as well as despite its popularity, chances of candidate answering this interrogation satisfactory is solely 50%. Half of the time, they failed to write code for double checked locking as well as one-half of the fourth dimension they failed how it was broken as well as fixed on Java 1.5. This is genuinely an old way of creating thread-safe singleton, which tries to optimize performance past times solely locking when Singleton instance is created offset time, but because of complexity as well as the fact it was broken for JDK 1.4, I personally don't similar it. Anyway, fifty-fifty if yous non prefer this approach its proficient to know from interview dot of view. Since this interrogation deserve a detailed answer, I have got answered inwards a separate post, yous tin displace read my post how double checked locking on Singleton works to larn to a greater extent than close it.
49) How to do thread-safe Singleton inwards Java? (answer)
This interrogation is genuinely follow-up of the previous question. If yous say yous don't similar double checked locking as well as then Interviewer is leap to inquire close alternative ways of creating thread-safe Singleton class. There are genuinely man, yous tin displace direct payoff of cast loading as well as static variable initialization characteristic of JVM to do instance of Singleton, or yous tin displace leverage powerful enumeration type inwards Java to do Singleton. I genuinely preferred that way, yous tin displace also read this article to larn to a greater extent than close it as well as reckon some sample code.
50) List downward 3 multi-threading best do yous follow? (answer)
This is my favorite interrogation because I believe that yous must follow sure enough best practices piece writing concurrent code which helps inwards performance, debugging as well as maintenance. Following are 3 best practices, I think an average Java programmer should follow:
51) How do yous forcefulness to start a Thread inwards Java? (answer)
This interrogation is similar how do yous forcefulness garbage collection inwards Java, at that spot is no way though yous tin displace brand a asking using System.gc() but it's non guaranteed. On Java multi-threading at that spot is absolutely no way to forcefulness start a thread, this is controlled past times thread scheduler as well as Java exposes no API to command thread schedule. This is notwithstanding a random fighting inwards Java.
52) What is the fork-join framework inwards Java? (answer)
The fork-join framework, introduced inwards JDK vii is a powerful tool available to Java developer to direct payoff of multiple processors of modern hateful solar daytime servers. It is designed for piece of work that tin displace live broken into smaller pieces recursively. The goal is to piece of work all the available processing powerfulness to heighten the performance of your application. One important payoff of The fork/join framework is that it uses a work-stealing algorithm. Worker threads that run out of things to do tin displace steal tasks from other threads that are notwithstanding busy. See this article for the much to a greater extent than detailed respond to this question.
53) What is the divergence betwixt calling wait() as well as sleep() method inwards Java multi-threading? (answer)
Though both hold off as well as slumber innovate some cast of recess inwards Java application, they are the tool for dissimilar needs. Wait method is used for inter-thread communication, it relinquishes lock if waiting for a status is truthful as well as hold off for notification when due to an activity of some other thread waiting status becomes false. On the other mitt sleep() method is exactly to relinquish CPU or halt execution of electrical flow thread for specified fourth dimension duration. Calling slumber method doesn't unloose the lock held past times the electrical flow thread. You tin displace also direct facial expression at this article to respond this interrogation alongside to a greater extent than details.
That's all on this listing of top 50 Java multi-threading as well as concurrency interview questions. I have got non shared answers of all the questions but provided plenty hints as well as links to explore farther as well as uncovering answers past times yourselves. As I said, permit me know if yous don't uncovering respond of whatever exceptional interrogation as well as I volition add together respond here.
You tin displace piece of work this listing to non solely to prepare for your marrow Java as well as programming interviews but also to banking concern check your noesis close basics of threads, multi-threading, concurrency, pattern patterns as well as threading issues similar race conditions, deadlock as well as thread security problems.
My intention is to brand this listing of interrogation as the woman rear of all listing of Java Multi-threading questions, but this tin displace non live done without your help. You tin displace also percentage whatever interrogation alongside us, which has been asked to yous or whatever interrogation for which yous yet to uncovering an answer.
This master copy listing is every bit useful to Java developers of all levels of experience. You tin displace read through this listing fifty-fifty if yous have got 2 to 3 years of working sense as a junior developer or five to half dozen years as a senior developer. It's fifty-fifty useful for freshers as well as beginners to expand their knowledge. I volition add together novel as well as latest multi-threading interrogation as as well as when I come upwardly across, as well as I asking yous all to ask, percentage as well as respond questions via comments to hold this listing relevant to all Java programmers.
Further Learning
Multithreading as well as Parallel Computing inwards Java
Applying Concurrency as well as Multi-threading to Common Java Patterns
Java Concurrency inwards Practice Course past times Heinz Kabutz
In a typical Java interview, Interviewer tardily starts from basic concepts of Thread past times asking questions like, why yous demand threads, how to do threads, which i is meliorate way to do threads e.g. by extending thread cast or implementing Runnable and as well as then tardily goes into Concurrency issues, challenges faced during evolution of concurrent Java applications, Java retentiveness model, higher-order concurrency utilities introduced inwards JDK 1.5, principles as well as pattern patterns of concurrent Java applications, classical multi-threading problems e.g. producer-consumer, dining philosopher, reader-writer or exactly bounded buffer problems.
Since its also non plenty exactly to know basics of threading, yous must know how to bargain alongside concurrency problems e.g. deadlock, race conditions, retentiveness inconsistency as well as diverse thread security related issues. These skills are thoroughly acquire tested past times presenting diverse multi-threading as well as concurrency problems.
Many Java developers are used to solely facial expression as well as read interview questions before going for the interview, which is non bad but yous should non live besides far away. Also collecting questions as well as going through the same exercise is besides much fourth dimension consuming, that's why I have got created this listing of top 50 Java multi-threading as well as concurrency related questions, collected from diverse interviews. I am solely going to add together novel as well as recent interview questions as as well as when I am going to uncovering them.
Though yous demand proficient noesis as well as company sense to do good on Java interviews focused on advanced multithreading as well as concurrency skill, I strongly recommend Java programmers to read Effective Java as well as Java Concurrency inwards Practice twice before going to interview. They do non solely assist yous to respond questions meliorate but also assist yous to nowadays your thought clearly.
By the way, I have got non provided answers to some questions here, Why? because I hold off most of Java developer to know the answers to this interrogation as well as if not, also answers are widely available past times using Google. If yous don't uncovering the respond to whatever exceptional question, yous tin displace ever inquire me inwards the comments section. You tin displace fifty-fifty uncovering answers to few questions on the link provided or my before post Top 12 Java Thread Questions alongside Answers.
50 Interview questions from Java Multi-threading as well as Concurrency
Here is our listing of top questions from Java thread, concurrency, as well as multi-threading. You tin displace piece of work this listing to prepare good for your Java interview.1) What is Thread inwards Java? (answer)
The thread is an independent path of execution. It's way to direct payoff of multiple CPU available inwards a machine. By employing multiple threads yous tin displace speed upwardly CPU leap task. For example, if i thread takes 100 milliseconds to do a job, yous tin displace piece of work 10 thread to cut back that project into 10 milliseconds. Java provides fantabulous back upwardly for multithreading at the linguistic communication level, as well as it's also i of the strong selling points.
2) What is the divergence betwixt Thread as well as Process inwards Java? (answer)
The thread is a subset of Process, inwards other words, i procedure tin displace comprise multiple threads. Two procedure runs on dissimilar retentiveness space, but all threads percentage same retentiveness space. Don't confuse this alongside stack memory, which is dissimilar for the dissimilar thread as well as used to shop local information to that thread. For to a greater extent than exceptional reckon the answer.
3) How do yous implement Thread inwards Java? (answer)
At the linguistic communication level, at that spot are ii ways to implement Thread inwards Java. An instance of java.lang.Thread stand upwardly for a thread but it needs a project to execute, which is an instance of interface java.lang.Runnable. Since Thread class itself implement Runnable, yous tin displace override run() method either past times extending Thread cast or exactly implementing Runnable interface. For detailed respond as well as give-and-take reckon this article.
4) When to piece of work Runnable vs Thread inwards Java? (answer)
This is a follow-up of previous multi-threading interview question. As nosotros know nosotros tin displace implement thread either past times extending Thread class or implementing Runnable interface, the interrogation arise, which i is meliorate as well as when to piece of work one? This interrogation volition live like shooting fish in a barrel to respond if yous know that Java programming linguistic communication doesn't back upwardly multiple inheritances of class, but it allows yous to implement multiple interfaces. Which means, it's meliorate to implement Runnable then extends Thread if yous also desire to extend some other cast e.g. Canvas or CommandListener. For to a greater extent than points as well as give-and-take yous tin displace also refer this post.
6) What is the divergence betwixt start() as well as run() method of Thread class? (answer)
One of play a joke on Java interrogation from early on days, but notwithstanding proficient plenty to differentiate betwixt shallow agreement of Java threading model start() method is used to start newly created thread, piece start() internally calls run() method, at that spot is divergence calling run() method directly. When yous invoke run() as normal method, its called inwards the same thread, no novel thread is started, which is the instance when yous telephone outcry upwardly start() method. Read this answer for much to a greater extent than detailed discussion.
7) What is the divergence betwixt Runnable as well as Callable inwards Java? (answer)
Both Runnable as well as Callable stand upwardly for project which is intended to live executed inwards a separate thread. Runnable is at that spot from JDK 1.0 piece Callable was added on JDK 1.5. Main divergence betwixt these ii is that Callable's call() method tin displace render value as well as throw Exception, which was non possible alongside Runnable's run() method. Callable render Future object, which tin displace agree the final result of computation. See my blog post on the same theme for a to a greater extent than in-depth respond to this question.
8) What is the divergence betwixt CyclicBarrier as well as CountDownLatch inwards Java? (answer)
Though both CyclicBarrier as well as CountDownLatch hold off for number of threads on i or to a greater extent than events, the primary divergence betwixt them is that yous tin displace non re-use CountDownLatch once count reaches to zero, but yous tin displace reuse same CyclicBarrier even after barrier is broken. See this answer for few to a greater extent than points as well as sample code example.
9) What is Java Memory model? (answer)
Java Memory model is laid of rules as well as guidelines which allows Java programs to conduct deterministically across multiple retentiveness architecture, CPU, as well as operating system. It's especially of import inwards instance of multi-threading. Java Memory Model provides some guarantee on which changes made past times i thread should live visible to others, i of them is happens-before relationship. This human relationship defines several rules which allows programmers to anticipate as well as argue behaviour of concurrent Java programs. For example, happens-before human relationship guarantees :
- Each activity inwards a thread happens-before every activity inwards that thread that comes after inwards the programme order, this is known as programme gild rule.
- An unlock on a monitor lock happens-before every subsequent lock on that same monitor lock, also known as Monitor lock rule.
- A write to a volatile plain happens-before every subsequent read of that same field, known as Volatile variable rule.
- A telephone outcry upwardly to Thread.start on a thread happens-before whatever other thread detects that thread has terminated, either past times successfully render from Thread.join() or past times Thread.isAlive() returning false, also known as Thread start rule.
- A thread calling interrupt on some other thread happens-before the interrupted thread detects the interrupt( either past times having InterruptedException thrown, or invoking isInterrupted or interrupted), popularly known as Thread Interruption rule.
- The halt of a constructor for an object happens-before the start of the finalizer for that object, known as Finalizer rule.
- If H5N1 happens-before B, as well as B happens-before C, as well as then H5N1 happens-before C, which way happens-before guarantees Transitivity.
10) What is volatile variable inwards Java? (answer)
volatile is a special modifier, which tin displace solely live used alongside instance variables. In concurrent Java programs, changes made past times multiple threads on instance variables is non visible to other inwards absence of whatever synchronizers e.g. synchronized keyword or locks. Volatile variable guarantees that a write volition occur before whatever subsequent read: as stated: "volatile variable rule" inwards previous question. Read this answer to larn to a greater extent than close volatile variable as well as when to piece of work them.
11) What is thread-safety? is Vector a thread-safe class? (Yes, reckon details)
Thread-safety is a belongings of an object or code which guarantees that if executed or used past times multiple threads inwards whatever mode e.g. read vs write it volition conduct as expected. For example, a thread-safe counter object volition non immature lady whatever count if same instance of that counter is shared amidst multiple threads. Apparently, yous tin displace also split upwardly collection classes inwards ii category, thread-safe as well as non-thread-safe. Vector is indeed a thread-safe cast as well as it achieves thread-safety past times synchronizing methods which modify state of Vector, on the other hand, its counterpart ArrayList is non thread-safe.
12) What is race status inwards Java? Given i example? (answer)
Race status are displace of some subtle programming bugs when Java programs are exposed to concurrent execution environment. As the mention suggests, a race status occurs due to race betwixt multiple threads, if a thread which is supposed to execute offset lost the race as well as executed second, behaviour of code changes, which surface as non-deterministic bugs. This is i of the hardest bugs to uncovering as well as re-produce because of random nature of racing betwixt threads. One instance of race status is out-of-order processing, reckon this answer for some to a greater extent than instance of race weather inwards Java programs.
13) How to halt a thread inwards Java? (answer(answer)
I ever said that Java provides rich APIs for everything but ironically Java doesn't supply a sure enough shot way of stopping thread. There was some command methods inwards JDK 1.0 e.g. stop(), suspend() as well as resume() which was deprecated inwards after releases due to potential deadlock threats, from as well as then Java API designers has non made whatever seek to supply a consistent, thread-safe as well as elegant way to halt threads. Programmers mainly rely on the fact that thread stops automatically as shortly as they goal execution of run() or call() method. To manually stop, programmers either direct payoff of volatile boolean variable as well as banking concern check inwards every iteration if run method has loops or interrupt threads to abruptly cancel tasks. See this tutorial for sample code of stopping thread inwards Java.
14) What happens when an Exception occurs inwards a thread? (answer)
This is i of the proficient tricky Java question I have got seen inwards interviews. In uncomplicated words, If non caught thread volition die, if an uncaught exception handler is registered as well as then it volition acquire a telephone outcry upwardly back. Thread.UncaughtExceptionHandler is an interface, defined as nested interface for handlers invoked when a Thread abruptly terminates due to an uncaught exception. When a thread is close to terminate due to an uncaught exception the Java Virtual Machine volition query the thread for its UncaughtExceptionHandler using Thread.getUncaughtExceptionHandler() as well as volition invoke the handler's uncaughtException() method, passing the thread as well as the exception as arguments.
15) How do yous percentage information betwixt ii thread inwards Java? (answer)
You tin displace percentage information betwixt threads past times using shared object, or concurrent information construction similar BlockingQueue. See this tutorial to learn inter-thread communication inwards Java. It implements Producer consumer pattern using hold off as well as notify methods, which involves sharing objects betwixt ii threads.
16) What is the divergence betwixt notify as well as notifyAll inwards Java? (answer)
This is some other tricky questions from marrow Java interviews, since multiple threads tin displace hold off on unmarried monitor lock, Java API designer provides method to inform solely i of them or all of them, i time waiting status changes, but they supply one-half implementation. There notify() method doesn't supply whatever way to direct a exceptional thread, that's why its solely useful when yous know that at that spot is solely i thread is waiting. On the other hand, notifyAll() sends notification to all threads as well as allows them to compete for locks, which ensures that at-least i thread volition hold further. See my blog post on similar theme for a to a greater extent than detailed respond as well as code example.
17) Why wait, notify as well as notifyAll are non within thread class? (answer)
This is a pattern related question, which checks what candidate thinks close existing organisation or does he ever thought of something which is thence mutual but looks in-appropriate at first. In gild to respond this question, yous have got to give some reasons why it brand sense for these 3 method to live inwards Object class, as well as why non on Thread class. One argue which is obvious is that Java provides lock at object degree non at thread level. Every object has lock, which is acquired past times thread. Now if thread needs to hold off for sure enough lock it brand sense to telephone outcry upwardly wait() on that object rather than on that thread. Had wait() method declared on Thread class, it was non clear that for which lock thread was waiting. In short, since wait, notify as well as notifyAll operate at lock level, it brand sense to defined it on object cast because lock belongs to object. You tin displace also reckon this article for to a greater extent than elaborate respond of this question.
18) What is ThreadLocal variable inwards Java? (answer)
ThreadLocal variables are special sort of variable available to Java programmer. Just similar instance variable is per instance, ThreadLocal variable is per thread. It's a prissy way to accomplish thread-safety of expensive-to-create objects, for instance yous tin displace brand SimpleDateFormat thread-safe using ThreadLocal. Since that cast is expensive, its non proficient to piece of work it inwards local scope, which requires separate instance on each invocation. By providing each thread their ain copy, yous shoot ii birds alongside i arrow. First, yous cut back number of instance of expensive object past times reusing fixed number of instances, as well as Second, yous accomplish thread-safety without paying toll of synchronization or immutability. Another proficient instance of thread local variable is ThreadLocalRandom class, which reduces number of instances of expensive-to-create Random object inwards multi-threading environment. See this answer to larn to a greater extent than close thread local variables inwards Java.
19) What is FutureTask inwards Java? (answer)
FutureTask represents a cancellable asynchronous computation inwards concurrent Java application. This cast provides a base of operations implementation of Future, alongside methods to start as well as cancel a computation, query to reckon if the computation is complete, as well as remember the final result of the computation. The final result tin displace solely live retrieved when the computation has completed; the acquire methods volition block if the computation has non yet completed. A FutureTask object tin displace live used to wrap a Callable or Runnable object. Since FutureTask also implements Runnable, it tin displace live submitted to an Executor for execution.
20) What is the divergence betwixt the interrupted() as well as isInterrupted() method inwards Java? (answer)
Main divergence betwixt interrupted() as well as isInterrupted() is that erstwhile clears the interrupt status piece after does not. The interrupt machinery inwards Java multi-threading is implemented using an internal flag known as the interrupt status. Interrupting a thread past times calling Thread.interrupt() sets this flag. When interrupted thread checks for an interrupt past times invoking the static method Thread.interrupted(), interrupt status is cleared. The non-static isInterrupted() method, which is used past times i thread to query the interrupt status of another, does non alter the interrupt status flag. By convention, whatever method that exits past times throwing an InterruptedException clears interrupt status when it does so. However, it's ever possible that interrupt status volition directly live laid again, past times some other thread invoking interrupt
21) Why hold off as well as notify method are called from synchronized block? (answer)
Main argue for calling hold off as well as notify method from either synchronized block or method is that it made mandatory past times Java API. If yous don't telephone outcry upwardly them from synchronized context, your code volition throw IllegalMonitorStateException. H5N1 to a greater extent than subtle argue is to avoid the race status betwixt hold off as well as notify calls. To larn to a greater extent than close this, banking concern check my similarly titled post here.
22) Why should yous banking concern check status for waiting inwards a loop? (answer)
Its possible for a waiting thread to have faux alerts as well as spurious wake upwardly calls, if it doesn't banking concern check the waiting status inwards loop, it volition exactly leave of absence fifty-fifty if status is non met. As such, when a waiting thread wakes up, it cannot assume that the state it was waiting for is notwithstanding valid. It may have got been valid inwards the past, but the state may have got been changed after the notify() method was called as well as before the waiting thread woke up. That's why it ever meliorate to telephone outcry upwardly wait() method from loop, yous tin displace fifty-fifty do template for calling hold off as well as notify inwards Eclipse. To larn to a greater extent than close this question, I would recommend yous to read Effective Java items on thread as well as synchronization.
23) What is the divergence betwixt synchronized as well as concurrent collection inwards Java? (answer)
Though both synchronized as well as concurrent collection provides thread-safe collection suitable for multi-threaded as well as concurrent access, after is to a greater extent than scalable than former. Before Java 1.5, Java programmers solely had synchronized collection which becomes rootage of argument if multiple thread access them concurrently, which hampers scalability of system. Java five introduced concurrent collections similar ConcurrentHashMap, which non solely provides thread-safety but also improves scalability past times using modern techniques similar lock stripping as well as partitioning internal table. See this answer for to a greater extent than differences betwixt synchronized as well as concurrent collection inwards Java.
24) What is the divergence betwixt Stack as well as Heap inwards Java? (answer)
Why does someone this interrogation as business office of multi-threading as well as concurrency? because Stack is a retentiveness expanse which is closely associated alongside threads. To respond this question, both stack as well as heap are specific memories inwards Java application. Each thread has their ain stack, which is used to shop local variables, method parameters as well as telephone outcry upwardly stack. Variable stored inwards i Thread's stack is non visible to other. On some other hand, the heap is a mutual retentiveness expanse which is shared past times all threads. Objects whether local or at whatever degree is created within heap. To improve performance thread tends to cache values from heap into their stack, which tin displace do problems if that variable is modified past times to a greater extent than than i thread, this is where volatile variables come upwardly into the picture. volatile advise threads read the value of variable ever from primary memory. See this article for learning to a greater extent than close stack as well as heap inwards Java to respond this interrogation inwards greater detail.
25) What is thread pool? Why should yous thread puddle inwards Java? (answer)
Creating thread is expensive inwards damage of fourth dimension as well as resource. If yous do thread at fourth dimension of asking processing it volition deadening downward your response time, also at that spot is solely a express number of threads a procedure tin displace create. To avoid both of these issues, a puddle of thread is created when application starts-up as well as threads are reused for asking processing. This puddle of thread is known as "thread pool" as well as threads are known as worker thread. From JDK 1.5 release, Java API provides Executor framework, which allows yous to do dissimilar types of thread pools e.g. unmarried thread pool, which procedure i project at a time, fixed thread puddle (a puddle of fixed number of threads) or cached thread puddle (an expandable thread puddle suitable for applications alongside many brusk lived tasks). See this article to learn to a greater extent than close thread pools inwards Java to prepare detailed respond of this question.
26) Write code to solve Producer Consumer work inwards Java? (answer)
Most of the threading work yous solved inwards the existent footing are of the category of Producer consumer pattern, where i thread is producing project as well as some other thread is consuming that. You must know how to do inter thread communication to solve this problem. At the lowest level, yous tin displace piece of work hold off as well as notify to solve this problem, as well as at a high level, yous tin displace leverage Semaphore or BlockingQueue to implement Producer consumer pattern, as shown inwards this tutorial.
27) How do yous avoid deadlock inwards Java? Write Code?
Deadlock is a status inwards which ii threads hold off for each other to direct activity which allows them to displace further. It's a serious number because when it occur your programme hangs as well as doesn't do the project it is intended for. In gild for deadlock to happen, next iv weather must live true:
- Mutual Exclusion : At to the lowest degree i resources must live held inwards a non-shareable mode. Only i procedure tin displace piece of work the resources at whatever given instant of time.
- Hold as well as Wait: H5N1 procedure is currently holding, at least, i resources as well as requesting additional resources which are beingness held past times other processes.
- No Pre-emption: The operating organisation must non de-allocate resources i time they have got been allocated; they must live released past times the holding procedure voluntarily.
- Circular Wait: A procedure must live waiting for a resources which is beingness held past times some other process, which inwards plow is waiting for the offset procedure to unloose the resource.
The easiest way to avoid deadlock is to preclude Circular wait, as well as this tin displace live done past times acquiring locks inwards a exceptional gild as well as releasing them inwards opposite gild thence that a thread tin displace solely hold to acquire a lock if it held the other one. Check this tutorial for the actual code instance as well as detailed give-and-take on techniques for avoiding deadlock inwards Java.
28) What is the divergence betwixt livelock as well as deadlock inwards Java? (answer)
This interrogation is extension of previous interview question. H5N1 livelock is similar to a deadlock, except that the states of the threads or processes involved inwards the livelock constantly alter alongside regard to i another, without whatever i progressing further. Livelock is a special instance of resources starvation. H5N1 real-world instance of livelock occurs when ii people run across inwards a narrow corridor, as well as each tries to live polite past times moving aside to permit the other pass, but they halt upwardly swaying from side to side without making whatever progress because they both repeatedly displace the same way at the same time. In short, the primary divergence betwixt livelock as well as deadlock is that inwards erstwhile state of procedure alter but no progress is made.
29) How do yous banking concern check if a Thread holds a lock or not? (answer)
I didn't fifty-fifty know that yous tin displace banking concern check if a Thread already holds lock before this interrogation hits me inwards a telephonic circular of Java interview. There is a method called holdsLock() on java.lang.Thread, it returns truthful if as well as solely if the electrical flow thread holds the monitor lock on the specified object. You tin displace also banking concern check this article for the to a greater extent than detailed answer.
30) How do yous direct thread dump inwards Java? (answer)
There are multiple ways to direct thread dump of Java procedure depending upon operating system. When yous direct thread dump, JVM dumps state of all threads inwards log files or criterion fault console. In windows yous tin displace piece of work Ctrl + Break fundamental combination to direct thread dump, on Linux yous tin displace piece of work kill -3 command for same. You tin displace also piece of work a tool called jstack for taking thread dump, it operate on procedure id, which tin displace live constitute using some other tool called jps.
31) Which JVM parameter is used to command stack size of a thread? (answer)
This is the uncomplicated one, -Xss parameter is used to command stack size of Thread inwards Java. You tin displace reckon this list of JVM options to larn to a greater extent than close this parameter.
32) What is the divergence betwixt synchronized as well as ReentrantLock inwards Java? (answer)
There were days when the solely way to supply mutual exclusion inwards Java was via synchronized keyword, but it has several shortcomings e.g. yous tin displace non extend lock beyond a method or block boundary, yous tin displace non surrender trying for a lock etc. Java five solves this work past times providing to a greater extent than sophisticated command via Lock interface. ReentrantLock is a mutual implementation of Lock interface as well as provides re-entrant mutual exclusion Lock alongside the same basic demeanour as well as semantics as the implicit monitor lock accessed using synchronized methods as well as statements, but alongside extended capabilities. See this article larn close those capabilities as well as some to a greater extent than differences betwixt synchronized vs ReentrantLock inwards Java.
33) There are 3 threads T1, T2, as well as T3? How do yous ensure sequence T1, T2, T3 inwards Java? (answer)
Sequencing inwards multi-threading tin displace live achieved past times dissimilar way but yous tin displace exactly piece of work the join() method of thread cast to start a thread when some other i has finished its execution. To ensure 3 threads execute yous demand to start the in conclusion i offset e.g. T3 as well as and then telephone outcry upwardly bring together methods inwards opposite gild e.g. T3 calls T2. bring together as well as T2 calls T1.join, these ways T1 volition goal offset as well as T3 volition goal last. To larn to a greater extent than close bring together method, reckon this tutorial.
34) What does yield method of Thread cast do? (answer)
Yield method is i way to asking electrical flow thread to relinquish CPU thence that other thread tin displace acquire a jeopardy to execute. Yield is a static method as well as solely guarantees that electrical flow thread volition relinquish the CPU but doesn't say anything close which other thread volition acquire CPU. Its possible for the same thread to acquire CPU dorsum as well as start its execution again. See this article to larn to a greater extent than close yield method and to respond this interrogation better.
35) What is the concurrency degree of ConcurrentHashMap inwards Java? (answer)
ConcurrentHashMap achieves it's scalability as well as thread-safety past times partitioning actual map into a number of sections. This partitioning is achieved using concurrency level. Its optional parameter of ConcurrentHashMap constructor as well as it's default value is 16. The tabular array is internally partitioned to seek to permit the indicated number of concurrent updates without contention. To larn to a greater extent than close concurrency degree as well as internal resizing, reckon my post How ConcurrentHashMap industrial plant inwards Java.
36) What is Semaphore inwards Java? (answer)
Semaphore inwards Java is a novel sort of synchronizer. It's a counting semaphore. Conceptually, a semaphore maintains a laid of permits. Each acquire() blocks if necessary until a permit is available, as well as and then takes it. Each release() adds a permit, potentially releasing a blocking acquirer. However, no actual permit objects are used; the Semaphore exactly keeps a count of the number available as well as acts accordingly. Semaphore is used to protect an expensive resources which is available inwards fixed number e.g. database connectedness inwards the pool. See this article to larn to a greater extent than close counting Semaphore inwards Java.
37) What happens if yous submit a project when the queue of the thread puddle is already filled? (answer)
This is some other tricky interrogation on my list. Many programmers volition think that it volition block until a project is cleared but its true. ThreadPoolExecutor's submit() method throws RejectedExecutionException if the project cannot live scheduled for execution.
38) What is the divergence betwixt the submit() as well as execute() method thread puddle inwards Java? (answer)
Both methods are ways to submit a project to thread pools but at that spot is a slight divergence betwixt them. execute(Runnable command) is defined inwards Executor interface as well as executes given project inwards future, but to a greater extent than importantly, it does non render anything. Its render type is void. On other mitt submit() is an overloaded method, it tin displace direct either Runnable or Callable project as well as tin displace render Future object which tin displace agree the pending final result of computation. This method is defined on ExecutorService interface, which extends Executor interface, as well as every other thread puddle cast e.g. ThreadPoolExecutor or ScheduledThreadPoolExecutor gets these methods. To larn to a greater extent than close thread pools yous tin displace banking concern check this article.
39) What is blocking method inwards Java? (answer)
H5N1 blocking method is a method which blocks until the project is done, for example, accept() method of ServerSocket blocks until a customer is connected. hither blocking way command volition non render to the caller until the project is finished. On the other hand, at that spot is an asynchronous or non-blocking method which returns fifty-fifty before the project is finished. To larn to a greater extent than close blocking method reckon this answer.
40) Is Swing thread-safe? What do yous hateful past times Swing thread-safe? (answer)
You tin displace exactly this interrogation as No, Swing is non thread-safe, but yous have got to explicate what yous hateful past times that fifty-fifty if the interviewer doesn't inquire close it. When nosotros say swing is non thread-safe nosotros usually refer its component, which tin displace non live modified inwards multiple threads. All update to GUI components has to live done on AWT thread, as well as Swing provides synchronous as well as asynchronous callback methods to schedule such updates. You tin displace also read my article to larn to a greater extent than close swing as well as thread-safety to meliorate respond this question. Even adjacent ii questions are also related to this concept.
41) What is the divergence betwixt invokeAndWait as well as invokeLater inwards Java? (answer)
These are ii methods Swing API provides Java developers for updating GUI components from threads other than Event dispatcher thread. InvokeAndWait() synchronously update GUI component, for example, a progress bar, i time progress is made, the bar should also live updated to reverberate that change. If progress is tracked inwards a dissimilar thread, it has to telephone outcry upwardly invokeAndWait() to schedule an update of that ingredient past times Event dispatcher thread. On some other hand, invokeLater() is an asynchronous telephone outcry upwardly to update components. You tin displace also refer this answer for to a greater extent than points.
42) Which method of Swing API are thread-safe inwards Java? (answer)
This interrogation is over again related to swing as well as thread-safety though components are non thread-safe at that spot is a sure enough method which tin displace live safely called from multiple threads. I know close repaint(), as well as revalidate() beingness thread-safe but at that spot are other methods on dissimilar swing components e.g. setText() method of JTextComponent, insert() as well as append() method of JTextArea class.
43) How to do an Immutable object inwards Java? (answer)
This interrogation powerfulness non facial expression related to multi-threading as well as concurrency, but it is. Immutability helps to simplify already complex concurrent code inwards Java. Since immutable object tin displace live shared without whatever synchronization its rattling love to Java developers. Core value object, which is meant to live shared amidst thread should live immutable for performance as well as simplicity. Unfortunately at that spot is no @Immutable tone inwards Java, which tin displace brand your object immutable, hard piece of work must live done past times Java developers. You demand to hold basics similar initializing state inwards constructor, no setter methods, no leaking of reference, keeping separate re-create of mutable object to do Immutable object. For measurement past times measurement guide reckon my post, how to brand an object Immutable inwards Java. This volition give yous plenty cloth to respond this interrogation alongside confidence.
44) What is ReadWriteLock inwards Java? (answer)
In general, read write lock is the final result of lock stripping technique to improve the performance of concurrent applications. In Java, ReadWriteLock is an interface which was added inwards Java five release. A ReadWriteLock maintains a pair of associated locks, i for read-only operations as well as i for writing. The read lock may live held simultaneously past times multiple reader threads, thence long as at that spot are no writers. The write lock is exclusive. If yous desire yous tin displace implement this interface alongside your ain laid of rules, otherwise yous tin displace use ReentrantReadWriteLock, which comes along alongside JDK as well as supports a maximum of 65535 recursive write locks as well as 65535 read locks.
45) What is busy spin inwards multi-threading? (answer)
Busy spin is a technique which concurrent programmers employ to brand a thread hold off on sure enough condition. Unlike traditional methods e.g. wait(), sleep() or yield() which all involves relinquishing CPU control, this method does non relinquish CPU, instead it the exactly runs empty loop. Why would someone do that? to save CPU caches. In a multi-core system, it's possible for a paused thread to resume on a dissimilar core, which way rebuilding cache again. To avoid toll of rebuilding cache, programmer prefer to hold off for much smaller fourth dimension doing busy spin. You tin displace also reckon this answer to larn to a greater extent than close this question.
46) What is the divergence betwixt the volatile as well as atomic variable inwards Java? (answer)
This is an interesting interrogation for Java programmer, at first, volatile as well as atomic variable facial expression rattling similar, but they are different. Volatile variable provides yous happens-before guarantee that a write volition occur before whatever subsequent write, it doesn't guarantee atomicity. For instance count++ functioning volition non acquire atomic exactly past times declaring count variable as volatile. On the other mitt AtomicInteger class provides atomic method to perform such chemical compound functioning atomically e.g. getAndIncrement() is atomic replacement of increment operator. It tin displace live used to atomically increment electrical flow value past times one. Similarly yous have got atomic version for other information type as well as reference variable as well.
47) What happens if a thread throws an Exception within synchronized block? (answer)
This is i to a greater extent than tricky interrogation for average Java programmer, if he tin displace convey the fact close whether lock is released or non is a fundamental indicator of his understanding. To respond this question, no affair how yous be synchronized block, either usually past times finishing execution or abruptly past times throwing exception, thread releases the lock it acquired piece entering that synchronized block. This is genuinely i of the reasons I similar synchronized block over lock interface, which requires explicit attending to unloose lock, by as well as large this is achieved past times releasing the lock inwards a finally block.
48) What is double checked locking of Singleton? (answer)
This is i of the rattling pop interrogation on Java interviews, as well as despite its popularity, chances of candidate answering this interrogation satisfactory is solely 50%. Half of the time, they failed to write code for double checked locking as well as one-half of the fourth dimension they failed how it was broken as well as fixed on Java 1.5. This is genuinely an old way of creating thread-safe singleton, which tries to optimize performance past times solely locking when Singleton instance is created offset time, but because of complexity as well as the fact it was broken for JDK 1.4, I personally don't similar it. Anyway, fifty-fifty if yous non prefer this approach its proficient to know from interview dot of view. Since this interrogation deserve a detailed answer, I have got answered inwards a separate post, yous tin displace read my post how double checked locking on Singleton works to larn to a greater extent than close it.
49) How to do thread-safe Singleton inwards Java? (answer)
This interrogation is genuinely follow-up of the previous question. If yous say yous don't similar double checked locking as well as then Interviewer is leap to inquire close alternative ways of creating thread-safe Singleton class. There are genuinely man, yous tin displace direct payoff of cast loading as well as static variable initialization characteristic of JVM to do instance of Singleton, or yous tin displace leverage powerful enumeration type inwards Java to do Singleton. I genuinely preferred that way, yous tin displace also read this article to larn to a greater extent than close it as well as reckon some sample code.
50) List downward 3 multi-threading best do yous follow? (answer)
This is my favorite interrogation because I believe that yous must follow sure enough best practices piece writing concurrent code which helps inwards performance, debugging as well as maintenance. Following are 3 best practices, I think an average Java programmer should follow:
- Always give meaningful mention to your threadThis goes a long way to uncovering a põrnikas or line an execution inwards concurrent code. OrderProcessor, QuoteProcessor or TradeProcessor is much meliorate than Thread-1. Thread-2 as well as Thread-3. The mention should say close project done past times that thread. All major framework as well as fifty-fifty JDK follow this best practice.
- Avoid locking or Reduce orbit of Synchronization
Locking is costly as well as context switching is fifty-fifty costlier. Try to avoid synchronization as well as locking as much as possible as well as at a bare minimum, yous should cut back critical section. That's why I prefer synchronized block over synchronized method because it gives yous absolute command on the orbit of locking. - Prefer Synchronizers over hold off as well as notify
Synchronizers similar CountDownLatch, Semaphore, CyclicBarrier or Exchanger simplifies coding. It's rattling hard to implement complex command menses correct using hold off as well as notify. Secondly, these classes are written as well as maintained past times best inwards concern as well as at that spot is proficient jeopardy that they are optimized or replaced past times meliorate performance code inwards subsequent JDK releases. By using higher degree synchronization utilities, yous automatically acquire all these benefits. - Prefer Concurrent Collection over Synchronized Collection
This is some other uncomplicated best do which is like shooting fish in a barrel to follow but reap proficient benefits. Concurrent collection are to a greater extent than scalable than their synchronized counterpart, that's why its meliorate to piece of work them piece writing concurrent code. So adjacent fourth dimension if yous demand map, think close ConcurrentHashMap before thinking Hashtable. See my article Concurrent Collections inwards Java, to larn to a greater extent than close modern collection classes as well as how to brand best piece of work of them.
51) How do yous forcefulness to start a Thread inwards Java? (answer)
This interrogation is similar how do yous forcefulness garbage collection inwards Java, at that spot is no way though yous tin displace brand a asking using System.gc() but it's non guaranteed. On Java multi-threading at that spot is absolutely no way to forcefulness start a thread, this is controlled past times thread scheduler as well as Java exposes no API to command thread schedule. This is notwithstanding a random fighting inwards Java.
52) What is the fork-join framework inwards Java? (answer)
The fork-join framework, introduced inwards JDK vii is a powerful tool available to Java developer to direct payoff of multiple processors of modern hateful solar daytime servers. It is designed for piece of work that tin displace live broken into smaller pieces recursively. The goal is to piece of work all the available processing powerfulness to heighten the performance of your application. One important payoff of The fork/join framework is that it uses a work-stealing algorithm. Worker threads that run out of things to do tin displace steal tasks from other threads that are notwithstanding busy. See this article for the much to a greater extent than detailed respond to this question.
53) What is the divergence betwixt calling wait() as well as sleep() method inwards Java multi-threading? (answer)
Though both hold off as well as slumber innovate some cast of recess inwards Java application, they are the tool for dissimilar needs. Wait method is used for inter-thread communication, it relinquishes lock if waiting for a status is truthful as well as hold off for notification when due to an activity of some other thread waiting status becomes false. On the other mitt sleep() method is exactly to relinquish CPU or halt execution of electrical flow thread for specified fourth dimension duration. Calling slumber method doesn't unloose the lock held past times the electrical flow thread. You tin displace also direct facial expression at this article to respond this interrogation alongside to a greater extent than details.
That's all on this listing of top 50 Java multi-threading as well as concurrency interview questions. I have got non shared answers of all the questions but provided plenty hints as well as links to explore farther as well as uncovering answers past times yourselves. As I said, permit me know if yous don't uncovering respond of whatever exceptional interrogation as well as I volition add together respond here.
You tin displace piece of work this listing to non solely to prepare for your marrow Java as well as programming interviews but also to banking concern check your noesis close basics of threads, multi-threading, concurrency, pattern patterns as well as threading issues similar race conditions, deadlock as well as thread security problems.
My intention is to brand this listing of interrogation as the woman rear of all listing of Java Multi-threading questions, but this tin displace non live done without your help. You tin displace also percentage whatever interrogation alongside us, which has been asked to yous or whatever interrogation for which yous yet to uncovering an answer.
This master copy listing is every bit useful to Java developers of all levels of experience. You tin displace read through this listing fifty-fifty if yous have got 2 to 3 years of working sense as a junior developer or five to half dozen years as a senior developer. It's fifty-fifty useful for freshers as well as beginners to expand their knowledge. I volition add together novel as well as latest multi-threading interrogation as as well as when I come upwardly across, as well as I asking yous all to ask, percentage as well as respond questions via comments to hold this listing relevant to all Java programmers.
Further Learning
Multithreading as well as Parallel Computing inwards Java
Applying Concurrency as well as Multi-threading to Common Java Patterns
Java Concurrency inwards Practice Course past times Heinz Kabutz
0 Response to "Top Fifty Coffee Thread Interview Questions Answers For Experienced"
Post a Comment