آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آیا یک Thread می‌تواند خروجی (مثلا String ) داشته باشد؟

علی  11 سال پیش  11 سال پیش
0 0

سلام.توی آموزش‌های استاد در مورد Threading (تا اونجایی که من نگاه کردم) همه Thread ها از نوع Runnable و بدون خروجی بودند.
می‌خواستم بدونم که آیا امکانش هست که یک Thread خروجی داشته باشه؟ مثلا یک مقدار String رو برگردونه.
می‌دونم توی ابزار AsyncTask این امکان وجود داره اما به دلایلی که من نمی‌دونم استاد استفاده از این ابزار رو توصیه نمی‌کنه و Thread رو ترجیح می‌ده.
از راهنمایی اساتید و دوستان ممنونم.

0 0
شما داخل ترد هیچ چیزی رو نمیتونید در ترد return کنید باید از لیسنر استفاده کنید (11 سال پیش)
0 0
دوست عزیز اگر از handler تو thread استفاده کنید هر کاری که دوست دارید میتونید انجام بدید. (11 سال پیش)
0 0
مهندس ترد نمیتونه هیچ چیز رو return بکنه چون نوع خروجی متدش void هست (11 سال پیش)
0 0
درسته thread به تنهایی نمیتونه ولی من با این روش هم محاسبه تو thread انجام میدم هم داده هامو return میکنم. (11 سال پیش)
0 0
بی زحمت روشتون رو بنویسید ببینم چطوریه.؟ ممنون میشم (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
ATRAS  11 سال پیش
0 0

نمیدونم منظور شما دقیقا همین هست یا نه ولی فعلا این کد دم دستم بود.

 

import android.os.Handler;


publicclassMindextends V {

publicstaticHandler handler1 =newHandler();


@Override
protectedvoid onCreate(android.os.Bundle savedInstanceState){
super.onCreate(savedInstanceState);

mydate =""+ year +"/"+ mon +"/"+ day +""+ hor +":ساعت";

Thread hour =newThread(newRunnable(){

@Override
publicvoid run(){
do{

try{
Thread.sleep(60*1000);
handlerpostmind();
}
catch(InterruptedException e){

e.printStackTrace();
}

}
while(true);
}

});

hour.start();

};


publicvoid handlerpostmind(){
Mind.handler1.post(newRunnable(){

@Override
publicvoid run(){

getdaramad();

}
});
}


publicvoid getdaramad(){

if(hor <=24){
hor +=1;
}
if(hor >=24){
day = day +1;
hor =1;
}
if(day >=30){

mon = mon +1;
day =1;
}
if(mon >=12){
year = year +1;
mon =1;
}

mydate =""+ year +"/"+ mon +"/"+ day +""+ hor +"ساعت";

}

}
0 0
خُب الان کجاش شما یه مقدار رو از ترد return کردی ؟ شما اومدی چندین متد رو تو هم صدا کردی برای اینکه یه مقدار رو از ترد خارج کنی .در ضمن این روش استفاده خیلی خشک هست ینی اگر شما چندین متد مختلف داشته باشید نمیتونید با این روش پیاده سازیش کنید . بهترین راه استفاده از لیسنر هست که استاد هم در آموزش هاشون یاد دادن . (11 سال پیش)
0 0
الان به کد اصلی دسترسی ندارم ولی به زودی براتون درج میکنم.حرف شما صحیح.استفاده از لیسنر هم روش خوبیه ولی یادتون نره برنامه نویسی یک چیز ثابت نیست شاید بعضی روش ها روش خیلی خوبی نباشه ولی خیلی وقتا خیلی راحت تر مشکل رو حل میکنه. (11 سال پیش)
+1 0
حرف شما هم متین هست ولی الان این روش آیا یک روش راحت هست ؟ ایجاد چندین متد برای خارج کردن یک مقدار صحیح هست ؟ شما فرض کنید برای اتصال به سرور 20 نوع متد مختلف دارید آیا با این روش میشه خروجی مناسب با کمترین کد نویسی رو داشت . الان شما داخل اکتیویتی ظاهرا اومدین و ترد رو اجرا کردید ، اگر ترد خارج از کلاس اکتیویتی و به صورت مستقل باشه جواب میده ؟ اینا سوالاتی هست که باید بررسی کنید و با توجه به این قضیه شما یک متد خوب ، تمیز و با کارایی بالا بنویسید. شاید در پروژه های معمولی جواب بده ولی در پروژه های سنگین حتما به مشکل برمیخورید تمام عرایض بنده جهت راهنمایی هست . (11 سال پیش)
0 0
دوست عزیز نگفتم که این روش روش خوبیه.اتفاقا این thread خارج از کلاس اکتیویتی اصلی هست.تمام حرف شما صحیح تو پروژه های سنگین جای برنامه نویسی حرفه ای و ایده عاله نه جای جای هر کد زنیه غیر منطقی.واقعا ممنون که وقت گذاشتی خیلی استفاده کردم.بازم ممنون. (11 سال پیش)
0 0
خوب من عادت دارم از کوچیک ترین پروژه تا پروژه بزرگ و پیچیده رو با بهترین روش ها پیاده سازی کنم . (11 سال پیش)
0 0
کار درستو شما انجام میدین.من تو دبیرستان به دلیل بی تجربگی زیاد از روش های خیلی منطقی استفاده نمیکردم.بعضی برنامه هامم یجورایی بعضی کداشو با کلک مینوشتم ولی الان یک ساله دارم سعیمو میکنم تا اونجا که ممکنه از بهترین روش تو برنامه هام استفاده کنم. (11 سال پیش)
0 0
خیلی خوبه چون هر چی تمیز تر بنویسید خودتون راحت ترید ، امیدوارم موفق باشید (11 سال پیش)
0 0
لطف دارید.همچنین. (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .