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

اجرای دوباره دستورات داخل یک Thread

mohsen.talk  12 سال پیش  12 سال پیش
+1 0

سلام

فرض کنید یک کلاس Thread داریم با نام MyThread که قرار هست با استفاده از یک Handler تغییراتی توی ui ما بده.

خب بعد از اینکه در قسمت onCreate برنامه این Thread رو start کردیم، MyThread کارش رو شروع میکنه و به یک if میرسه و کارش تموم میشه.

حالا اگه دوباره بخوایم MyThread عملیات رو از نو شروع کنه نمیشه از MyThread.start() استفاده کرد!

چطور میشه دستورات یک Thread رو از نو خواست که اجرا بشن؟

ممنون

0 0
فکر کنم برای تکرار باید از متد run به جای start استفاده کنی (12 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
pupil  12 سال پیش
0 0

مطمینی thread تموم مشه با یه log امتحان کن .یا threadرو نذار تمام بشه با یه دستور whlie من خودم این سوالو قبلا داشتم یه سری به سوالات پاسخ داده من بنداز شاید کمک کنه ببخش بیشتر بلد نیستم

پاسخ به سوال 
sadeghbarout  12 سال پیش
0 0

همونطور که دوستمون گفت یه راه اینه که نذاری thread تموم بشه مثلا با چک کردن یه متفییر boolean

 Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {

                boolean restart = true;
                while (restart) {

                    //دستورات
                }
            }
        });

حالا هروقت ، وقتش رسید مقدار متغییر restart رو از داخل حلقه false کن

پاسخ به سوال 
مجتبی یگانه  12 سال پیش
+1 0

به نظر من ، بهترین کار فراخوانی یک تابع در رشته هست ، اما بهتره قبل از شروع رشته ی جدید رشته ی قبلی را null کنیم ، یعنی یه از حافظه خارج کنیم تا دیگه کاری نکنه

 package milad.cso.learn;

import android.app.Activity;
import android.os.Bundle;


public class ActivityMain extends Activity {

    Thread  thread1;
    Thread  thread2;
Boolean isJobD private void SomeFunction() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); thread1 = new Thread(new Runnable() { @Override public void run() { if ( !isJobDone) { SomeFunction(); thread1 = null; } } }); thread1.start(); // thread is out of memory when job is done ! now we can do job another time thread2 = new Thread(new Runnable() { @Override public void run() { if ( !isJobDone) { SomeFunction(); thread2 = null; } } }); thread2.start(); } }

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