please wait

  • Nageshwer Reddy Mar-13-2019 06:01:21 AM ( 2 months ago )


    I have a java class as below

    class User {
        String name;
        String phone;
        public String getName() {
            return name;
        public String getPhone() {
            return phone;

    The way this class is used is, for every thread 1 object of this User class is created. Now since there is one copy of object for every thread, can i call this class as thread safe?

    Do I need to synchronize these methods?

  • Jasmin Bhasin Mar-13-2019 06:11:26 AM ( 2 months ago )

    The way you presented it, if each thread has its one copy, then it can be called thread-safe, as maximum of accessing threads is one.

    Another thing - if you declare your fields as private and create the instance of that class as final, then it's immutable (final User user = new User(...)). There are no setters, so the object cannot be modified as well as it cannot change its reference. If you wanted to keep the immutability, you would have to make setters return a new instance of this object with changed fields.

    @markspace noticed, that better approach would be to declare fields as final, because if you use the previous one and make User a member of some class, it won't work (unless final).

Please login

Similar Discussion

Recommended For You