
- Java Tutorial
- Java - Home
- Java - Overview
- Java - Environment Setup
- Java - Basic Syntax
- Java - Object & Classes
- Java - Constructors
- Java - Basic Datatypes
- Java - Variable Types
- Java - Modifier Types
- Java - Basic Operators
- Java - Loop Control
- Java - Decision Making
- Java - Numbers
- Java - Characters
- Java - Strings
- Java - Arrays
- Java - Date & Time
- Java - Regular Expressions
- Java - Methods
- Java - Files and I/O
- Java - Exceptions
- Java - Inner classes
- Java Object Oriented
- Java - Inheritance
- Java - Overriding
- Java - Polymorphism
- Java - Abstraction
- Java - Encapsulation
- Java - Interfaces
- Java - Packages
- Java Advanced
- Java - Data Structures
- Java - Collections
- Java - Generics
- Java - Serialization
- Java - Networking
- Java - Sending Email
- Java - Multithreading
- Java - Applet Basics
- Java - Documentation
- Java Useful Resources
- Java - Questions and Answers
- Java - Quick Guide
- Java - Useful Resources
- Java - Discussion
- Java - Examples
When can we use Synchronized blocks in Java?
A Synchronized block is a piece of code that can be used to perform synchronization on any specific resource of the method. A Synchronized block is used to lock an object for any shared resource and the scope of a synchronized block is smaller than the synchronized method.
Syntax
synchronized(object) { // block of code }
Here, an object is a reference to the object being synchronized. A synchronized block ensures that a call to a method that is a member of an object occurs only after the current thread has successfully entered the object’s monitor.
Example
class TicketCounter { int availableSeats = 2; void bookTicket(String name, int numberOfSeats) { if((availableSeats >= numberOfSeats) && (numberOfSeats > 0)) { System.out.println(name+" : "+ numberOfSeats + " Seats Booking Success"); availableSeats -= numberOfSeats; } else { System.out.println(name +" : Seats Not Available"); } } } class TicketBookingThread extends Thread { TicketCounter tc; String name; int seats; TicketBookingThread(TicketCounter tc, String name, int seats) { this.tc = tc; this.name = name; this.seats = seats; } public void run() { synchronized(tc) { // synchronized block tc.bookTicket(name, seats); } } } public class SynchronizedBlockTest { public static void main(String[] args) { TicketCounter tc = new TicketCounter(); TicketBookingThread t1 = new TicketBookingThread(tc, "Adithya", 2); TicketBookingThread t2 = new TicketBookingThread(tc, "Jai", 2); t1.start(); t2.start(); } }
Output
Adithya : 2 Seats Booking Success Jai : Seats Not Available
- Related Articles
- When can we use a JSONStringer in Java?
- When can we use the pack() method in Java?
- When can we use the getClass() method in Java?
- When can we use StackWalker.getCallerClass() method in Java 9?
- When can we use intern() method of String class in Java?
- Can a constructor be synchronized in Java?
- Can we define a try block with multiple catch blocks in Java?
- Can we write any statements between try, catch and finally blocks in Java?
- Can we have a return statement in the catch or, finally blocks in Java?
- In SAP we can use the Java Connector
- Can we use Comparator with list in Java?
- When and where static blocks are executed in java?
- synchronized Keyword in Java
- Can we use Switch statement with Strings in java?
- How can we use the StringTokenizer class in Java?

Advertisements