Java Threads
Java Threads
No.
15) What is the difference between sleep() and yield()?
When a Thread calls the sleep() method, it will return to its waiting state. When a
Thread calls the yield() method, it returns to the ready state.
16) What is a Daemon Thread?
Daemon is a low priority thread which runs in the backgrouund.
17) How to make a normal thread as daemon thread?
We should call setDaemon(true) method on the thread object to make a thread as
daemon thread.
18) What is the difference between normal thread and daemon thread?
Normal threads do mainstream activity, whereas daemon threads are used low priority
work. Hence daemon threads are also stopped when there are no normal threads.
19) Give one good example of a daemon thread?
Garbage Collector is a low priority daemon thread.
20) What does the start() method of Thread do?
The thread's start() method puts the thread in ready state and makes the thread eligible
to run. start() method automatically calls the run () method.
21) What are the two ways that a code can be synchronised?
a. Method can be declared as synchronised.
b. A block of code be sychronised.
22) Can you declare a static method as synchronized?
Yes, we can declare static method as synchronized. But the calling thread should
acquire lock on the class that owns the method.
23) Can a thread execute another objects run() method?
A thread can execute it's own run() method or another objects run() method.
24) What is the default priority of a Thread?
NORM_PRIORITY
25) What is a deadlock?
A condition that occurs when two processes are waiting for each other to complete
before proceeding. The result is that both processes wait endlessly.
26) What are all the methods used for Inter Thread communication and what is the
class in which these methods are defined?
a. wait(),notify() & notifyall()
b. Object class
27) What is the mechanisam defind in java for a code segment be used by only one
Thread at a time?
Synchronisation
28) What is the procedure to own the moniter by many threads?
Its not possible. A monitor can be held by only one thread at a time.
29) What is the unit for 500 in the statement, obj.sleep(500);?
500 is the no of milliseconds and the data type is long.
30) What are the values of the following thread priority constants?
MAX_PRIORITY,MIN_PRIORITY and NORMAL_PRIORITY
10,1,5
31) What is the default thread at the time of starting a java application?
main thread
32) The word synchronized can be used with only a method. True/ False?
False. A block of code can also be synchronised.
33) What is a Monitor?
A monitor is an object which contains some synchronized code in it.
34) What are all the methods defined in the Runnable Interface?
only run() method is defined the Runnable interface.
35) How can i start a dead thread?
A dead Thread cannot be started again.
36) When does a Thread die?
A Thread dies after completion of run() method.
37) What does the yield() method do?
The yield() method puts currently running thread in to ready state.
38) What exception does the wait() method throw?
The java.lang.Object class wait() method throws "InterruptedException".
39) What does notifyAll() method do?
notifyAll() method moves all waiting threads from the waiting pool to ready state.
40) What does wait() method do?
wait() method releases CPU, releases objects lock, the thread enters into pool of
waiting threads.
Thread A program vs. similar to a sequential program an run on its own vs. Cannot run on
its own Unit of allocation vs. Unit of execution Have its own memory space vs. Share
with others Each process has one or more threads vs. Each thread belongs to one process
Expensive, need to context switch vs. Cheap, can use process memory and may not need
to context switch More secure. One process cannot corrupt another process vs. Less
secure. A thread can write the memory used by another thread
Can an inner class declared inside of a method access local variables of this method?
It's possible if these variables are final.
What can go wrong if you replace &emp;&emp; with &emp; in the following code:
String a=null; if (a!=null && a.length()>10) {...}
A single ampersand here would lead to a NullPointerException.
What is the Vector class?
The Vector class provides the capability to implement a growable array of objects
What modifiers may be used with an inner class that is a member of an outer class?
A (non-local) inner class may be declared as public, protected, private, static, final, or
abstract.
If a method is declared as protected, where may the method be accessed?
A protected method may only be accessed by classes or interfaces of the same package or
by subclasses of the class in which it is declared.
What is an Iterator interface?
The Iterator interface is used to step through the elements of a Collection.
How many bits are used to represent Unicode, ASCII, UTF-16, and UTF-8
characters?
Unicode requires 16 bits and ASCII require 7 bits. Although the ASCII character set uses
only 7 bits, it is usually represented as 8 bits. UTF-8 represents characters using 8, 16,
and 18 bit patterns. UTF-16 uses 16-bit and larger bit patterns.
What's the main difference between a Vector and an ArrayList?
Java Vector class is internally synchronized and ArrayList is not.
What are wrapped classes?
Wrapped classes are classes that allow primitive types to be accessed as objects.
Does garbage collection guarantee that a program will not run out of memory?
No, it doesn't. It is possible for programs to use up memory resources faster than they are
garbage collected. It is also possible for programs to create objects that are not subject to
garbage collection.
If a binary bitwise operator has one long operand, the other operand is converted to a
long value.
The type of the result of a bitwise operation is the type to which the operands have been
promoted. For example:
short a = 5;
byte b = 10;
long c = 15;
The type of the result of (a+b) is int, not short or byte. The type of the result of (a+c) or
(b+c) is long.
Is the numeric promotion available in other platform?
Yes. Because Java is implemented using a platform-independent virtual machine, bitwise
operations always yield the same result, even when run on machines that use radically
different CPUs.
What is the difference between the Boolean & operator and the && operator?
If an expression involving the Boolean & operator is evaluated, both operands are
evaluated. Then the & operator is applied to the operand. When an expression involving
the && operator is evaluated, the first operand is evaluated. If the first operand returns a
value of true then the second operand is evaluated. The && operator is then applied to the
first and second operands. If the first operand evaluates to false, the evaluation of the
second operand is skipped.
Operator & has no chance to skip both sides evaluation and && operator does. If asked
why, give details as above.
When is the ArithmeticException throwQuestion: What is the GregorianCalendar
class?
The GregorianCalendar provides support for traditional Western calendars.
What is the SimpleTimeZone class?
The SimpleTimeZone class provides support for a Gregorian calendar.
How can a subclass call a method or a constructor defined in a superclass?
Use the following syntax: super.myMethod(); To call a constructor of the superclass, just
write super(); in the first line of the subclass's constructor.
What is the Properties class?
The properties class is a subclass of Hashtable that can be read from or written to a
stream. It also provides the capability to specify a set of default values to be used.
What is the purpose of the Runtime class?
The purpose of the Runtime class is to provide access to the Java runtime system.
What is synchronization and why is it important?
With respect to multithreading, synchronization is the capability to control the access of
multiple threads to shared resources. Without synchronization, it is possible for one
thread to modify a shared object while another thread is in the process of using or
updating that object's value. This often causes dirty data and leads to significant errors.
What are synchronized methods and synchronized statements?
Synchronized methods are methods that are used to control access to a method or an
object. A thread only executes a synchronized method after it has acquired the lock for
the method's object or class. Synchronized statements are similar to synchronized
methods. A synchronized statement can only be executed after a thread has acquired the
lock for the object or class referenced in the synchronized statement.
What are three ways in which a thread can enter the waiting state?
A thread can enter the waiting state by invoking its sleep() method, by blocking on IO, by
unsuccessfully attempting to acquire an object's lock, or by invoking an object's wait()
method. It can also enter the waiting state by invoking its (deprecated) suspend() method.
Can a lock be acquired on a class?
Yes, a lock can be acquired on a class. This lock is acquired on the class's Class object.
What's new with the stop(), suspend() and resume() methods in JDK 1.2?
The stop(), suspend() and resume() methods have been deprecated in JDK 1.2.
What is the preferred size of a component?
The preferred size of a component is the minimum component size that will allow the
component to display normally.
What's the difference between J2SDK 1.5 and J2SDK 5.0?
There's no difference, Sun Microsystems just re-branded this version.
What would you use to compare two String variables - the operator == or the
method equals()?
I'd use the method equals() to compare the values of the Strings and the == to check if
two variables point at the same instance of a String object.
What is thread?
A thread is an independent path of execution in a system.
What is multi-threading?
Multi-threading means various threads that run in a system.
How does multi-threading take place on a computer with a single CPU?
The operating system's task scheduler allocates execution time to multiple tasks. By
quickly switching between executing tasks, it creates the impression that tasks execute
sequentially.
How to create a thread in a program?
You have two ways to do so. First, making your class "extends" Thread class. Second,
making your class "implements" Runnable interface. Put jobs in a run() method and call
start() method to start the thread.
Can Java object be locked down for exclusive use by a given thread?
Yes. You can lock an object by putting it in a "synchronized" block. The locked object is
inaccessible to any thread other than the one that explicitly claimed it.
Can each Java object keep track of all the threads that want to exclusively access to
it?
Yes. Use Thread.currentThread() method to track the accessing thread.
Does it matter in what order catch statements for FileNotFoundException and
IOExceptipon are written?
Yes, it does. The FileNoFoundException is inherited from the IOException. Exception's
subclasses have to be caught first.
What invokes a thread's run() method?
After a thread is started, via its start() method of the Thread class, the JVM invokes the
thread's run() method when the thread is initially executed.
What is the purpose of the wait(), notify(), and notifyAll() methods?
The wait(),notify(), and notifyAll() methods are used to provide an efficient way for
threads to communicate each other.
What are the high-level thread states?
The high-level thread states are ready, running, waiting, and dead.
What is the difference between yielding and sleeping?
When a task invokes its yield() method, it returns to the ready state. When a task invokes
its sleep() method, it returns to the waiting state.
What happens when a thread cannot acquire a lock on an object?
If a thread attempts to execute a synchronized method or synchronized statement and is
unable to acquire an object's lock, it enters the waiting state until the lock becomes
available.
What is the difference between Process and Thread?
A process can contain multiple threads. In most multithreading operating systems, a
process gets its own memory address space; a thread doesn't. Threads typically share the
heap belonging to their parent process. For instance, a JVM runs in a single process in the
host O/S. Threads in the JVM share the heap belonging to that process; that's why several
threads may access the same object. Typically, even though they share a common heap,
threads have their own stack space. This is how one thread's invocation of a method is
kept separate from another's. This is all a gross oversimplification, but it's accurate
enough at a high level. Lots of details differ between operating systems. Process vs.
Thread A program vs. similar to a sequential program an run on its own vs. Cannot run on
its own Unit of allocation vs. Unit of execution Have its own memory space vs. Share
10
with others Each process has one or more threads vs. Each thread belongs to one process
Expensive, need to context switch vs. Cheap, can use process memory and may not need
to context switch More secure. One process cannot corrupt another process vs. Less
secure. A thread can write the memory used by another thread
Can an inner class declared inside of a method access local variables of this method?
It's possible if these variables are final.
What can go wrong if you replace &emp;&emp; with &emp; in the following code:
String a=null; if (a!=null && a.length()>10) {...}
A single ampersand here would lead to a NullPointerException.
What is the Vector class?
The Vector class provides the capability to implement a growable array of objects
What modifiers may be used with an inner class that is a member of an outer class?
A (non-local) inner class may be declared as public, protected, private, static, final, or
abstract.
If a method is declared as protected, where may the method be accessed?
A protected method may only be accessed by classes or interfaces of the same package or
by subclasses of the class in which it is declared.
What is an Iterator interface?
The Iterator interface is used to step through the elements of a Collection.
How many bits are used to represent Unicode, ASCII, UTF-16, and UTF-8
characters?
Unicode requires 16 bits and ASCII require 7 bits. Although the ASCII character set uses
only 7 bits, it is usually represented as 8 bits. UTF-8 represents characters using 8, 16,
and 18 bit patterns. UTF-16 uses 16-bit and larger bit patterns.
What's the main difference between a Vector and an ArrayList?
Java Vector class is internally synchronized and ArrayList is not.
What are wrapped classes?
Wrapped classes are classes that allow primitive types to be accessed as objects.
Does garbage collection guarantee that a program will not run out of memory?
No, it doesn't. It is possible for programs to use up memory resources faster than they are
garbage collected. It is also possible for programs to create objects that are not subject to
garbage collection.
What is the difference between preemptive scheduling and time slicing?
Under preemptive scheduling, the highest priority task executes until it enters the waiting
or dead states or a higher priority task comes into existence. Under time slicing, a task
11
executes for a predefined slice of time and then reenters the pool of ready tasks. The
scheduler then determines which task should execute next, based on priority and other
factors.
12