Discussion
Sample41 is run - what will be the output?
public class Sample41
{
static final StringBuilder LOG = new StringBuilder();
public static void main(String[] args) throws InterruptedException
{
Runnable job = () -> { for (int i = 0; i < 1000; i++) LOG.append('x'); };
Thread a = new Thread(job), b = new Thread(job);
a.start(); b.start(); a.join(); b.join();
System.out.println(LOG.length());
}
}
Answer: A
StringBuilder makes no attempt at thread safety, so two threads appending concurrently can corrupt its internal length and array; the result may be short, or an ArrayIndexOutOfBoundsException from inside append. The joins order the print but cannot repair the damage. StringBuffer, or a lock, is what makes it safe.
No comment is present. Be the first to comment.
Loading…
Post your comment
Please log in or register to post a comment.
Examination Categories
- SSC Exams
- Banking Exams
- Teaching Exams
- Civil Services Exams
- Railways Exams
- Engineering Recruitment Exams
- Defence Exams
- State Government Exams
- Police Exams
- Insurance Exams
- Nursing Exams
- Other Government Exams
- NRA CET
- PG Entrance Exams
- Campus Placement
- MBA Entrance Exams
- CUET and UG Entrance
- Judiciary Exams
- Regulatory Body Exams
- Software Development