PDA

View Full Version : سوال: synchronized در جاوا به چه معناست ؟



dasssnj
یک شنبه 08 دی 1392, 10:07 صبح
سلام دوستان .
من چند تا کد سورس جاوا از github دانلود کردم ولی یه کلمه ی کلیدی به نام synchronized دیدم که نمی دونم که چه کاری می کنه .
تو رو خدا اگه کسی بلده راهنماییم کنه .
ممنون.

a.seieddokht
یک شنبه 08 دی 1392, 13:09 عصر
سلام دوستان .
من چند تا کد سورس جاوا از github دانلود کردم ولی یه کلمه ی کلیدی به نام synchronized دیدم که نمی دونم که چه کاری می کنه .
تو رو خدا اگه کسی بلده راهنماییم کنه .
ممنون.d


با سلام

دوست عزیز شما قبول داری که 2 تا ترد به صورت هم زمان میتونن متدی از یک کلاس رو اجرا کنن ؟؟؟

خوب وقتی 1 متد قبلش بنویسی sync از این کار جلوگیری میکنه یعنی اولین ترد اون متد رو اجرا میکنه کامل وقتی کارش تموم شد ترد بعدی میاد اون رو اجرا میکنه

موفق باشید:لبخندساده:

Ebrahimkh
یک شنبه 08 دی 1392, 13:44 عصر
در اصل برا همزمان سازی نخها
بکار میرود

dasssnj
سه شنبه 28 مرداد 1393, 12:45 عصر
فرق بلاک synchronized با متد synchronized چیه؟

mr_stone
سه شنبه 28 مرداد 1393, 14:54 عصر
فرق بلاک synchronized با متد synchronized چیه؟

شما وقتی یک متد یا کلاس رو sync میکنی کل اون محتوا قفل گذاری میشه و همزمان چندتا thread نمیتونن بهش دسترسی داشته باشن اما میتونی داخل تابع یا کلاست یک قسمت خاصی رو sync کنی که در اینصورت مابقیه thread ها به سایر قسمتهای تابع یا کلاست دسترسی دارن و البته روش دوم هم به صرفه تره هم بهتر اما یکم باید توی گذاشتن بلاک ها دققت کنی .

cups_of_java
سه شنبه 28 مرداد 1393, 23:21 عصر
به عبارت دیگه متد synchronized مثل اینه:

public void syncMethod() {
synchronized(this) {
// you mutual exclusive code...
}
}

ولی با بلاک شما دست بازه که 1) چقدر از کد یک متد و 2) با چه شی ای رو قفل کنی.

dasssnj
چهارشنبه 29 مرداد 1393, 10:36 صبح
خیلی ممنون . فقط اگه از هر کدوم یه مثال بزنید و شئ فقل را هم توضیح بدید دیگه کامل یاد می گیرم.:چشمک:

ahmad.mo74
چهارشنبه 29 مرداد 1393, 13:23 عصر
سلام، سورس اون برنامه ipscan (https://www.dropbox.com/s/jbxpi5427dl87wo/IPScanner.zip) رو ببین...

cups_of_java
چهارشنبه 29 مرداد 1393, 21:03 عصر
خیلی ممنون . فقط اگه از هر کدوم یه مثال بزنید و شئ فقل را هم توضیح بدید دیگه کامل یاد می گیرم.:چشمک:

شی قفل منظور همون شی ای هست که روش قفل زده میشه. مدل جاوا به این صورت هست که هر شی در جاوا یک مانیتور (قفل) رو در دل خودش داره که در آن واحد می تونه فقط دست یک ترد باشه. بنابراین هر تردی که synchronized بلاک رو روی یک شی که داخل پرانتزش اومده اجرا کنه سعی در گرفتن اون قفل شی مذکور میشه و اولیشون قفل رو میگیره. بقیه صبر میکنن تا قفل آزاد شه.
این حالت کلیش هست. حالا وقتی شما یک متد رو synchronized برچسب میزنی شبیه این می مونه که اون بلاک سراسر متد رو دربر میگیره و شی داخل پرانتز هم this هستش.

dasssnj
پنج شنبه 30 مرداد 1393, 05:10 صبح
ممنون دست همتون درد نکنه.