This book is for Java programmers who have a fundamental grasp of object-oriented programing and core Java features. You should be familiar with variables, types, classes, properties, methods, generics, inheritance, interfaces, and static classes/properties/methods. In the Java standard library, you should at least be familiar with collections (including Lists, Sets, and Maps) as well as object equality (hashcode()/equals()). If any of these topics sound unfamiliar, you may want to read Java: A Beginner’s Guide by Herbert Schildt to learn the fundamentals of Java. Also, Effective Java (2nd Edition) by Joshua Bloch is a classic book that should be on every Java developer’s shelf. This book strives to use the best practices cited by Bloch.
You do not need to be familiar with concurrency as a prerequisite. This topic will be covered from an RxJava perspective.