پیاده سازی ای که به ما اطمینان بده هیچ گونه race condition ای هنگام دسترسی همزمان چند thread به یک ساختار داده صورت نمیگیره رو پیاده سازیِ thread safe میگیم.
race condition : شرایطی که چند thread توانایی دسترسی همزمان به یک داده و تغییر آن را داشته باشند.
این اطمینان رو از طریق روش های زیر کسب کرد:
* قرار دادن lock روی داده های مشترک (باید از بوجود امدن deadlock جلوگیری کرد و به منظور کارایی بیشتر تا حد امکان از starvation جلوگیری کرد)
* استفاده از داده های atomic به عنوان متغیرها مشترک (کارایی بیشتر نسبت به بقیه راه ها)
* استفاده از داده های volatile
* استفاده از بلاک ها یا متدهای synchronize