A method or block of code is marked as synchronized if only one thread of control can be in it at a time. Other threads are locked out. The code is reentrant. It protects resources from interference by multiple access at one time. An abstract method is one that is defined in classes derived from this class.
All subclasses have a version as defined in the base class or also declare it as abstract.
An abstract method makes the whole class abstract . A class that inherits an abstract method and does not override it is also an abstract class. An abstract class can not be used to construct new objects. You can only call an abstract method via an object in a class that has extended the abstract class and defined all the abstract methods. If another thread excuting this code at the same time can not change the value of a variable then the variable is threadsafe and the compiler may do clever things with it to make the code faster or smaller. .