Omid Zakeri

Thread

1 ارسال در این موضوع قرار دارد

برای افزایش سرعت و همچنین بهینه سازی برنامه می توانیم از برنامه نویسی چند نخی « Thread » استفاده نماییم. با این کار می توانیم وظایف برنام را به چند قسمت تقسیم و به طور همزمان انجام بدهیم تا سرعت بالاتری برای برنامه رقم بزنیم. برنامه نویسی چند نخی یکی از اساسی ترین و مهمترین ارکان برنامه نویسی می باشد که متأسفانه حتی بسیاری از برنامه نویسان حرفه ای نیز آنرا نادیده می گیرند. 

چرا که با وجود سرعت های بالای CPU در سخت افزارهای PC و Notebook نیاز به استفاده از Thread ها به چشم نمی آید اما یکی از بزرگترین دلایل وجود Hang و در نتیجه Crash ها عدم توجه به این تکنیک برنامه نویسی می باشد.

در دستگاه های ضعیف تر نظیر Smart Phone ها استفاده از Thread ها بسیار واجب و ضروری می باشد و حتی برای انجام هر عمل کم زمانبر نیز استفاده از Thread ها اکیداً توصیه می گردد.

new Thread(new Runnable() {

    @Override
    public void run() {

        // your codes

    }
}).start();

بد نیست که همین کد بالا را به شیوه ای دیگر بنویسیم :

Runnable runnable = new Runnable() {
    public void run() {         
                
        // your codes
                
    }
};
Thread myThread = new Thread(runnable);
myThread.start();

 

2 کاربر پسند شده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط Omid Zakeri
      برای افزایش سرعت و همچنین بهینه سازی برنامه می توانیم از برنامه نویسی چند نخی « Thread » استفاده نماییم. با این کار می توانیم وظایف برنام را به چند قسمت تقسیم و به طور همزمان انجام بدهیم تا سرعت بالاتری برای برنامه رقم بزنیم. برنامه نویسی چند نخی یکی از اساسی ترین و مهمترین ارکان برنامه نویسی می باشد که متأسفانه حتی بسیاری از برنامه نویسان حرفه ای نیز آنرا نادیده می گیرند. چرا که با وجود سرعت های بالای CPU در سخت افزارهای PC و Notebook نیاز به استفاده از Thread ها به چشم نمی آید اما یکی از بزرگترین دلایل وجود Hang و در نتیجه Crash ها عدم توجه به این تکنیک برنامه نویسی می باشد.
      در دستگاه های ضعیف تر نظیر Smart Phone ها استفاده از Thread ها بسیار واجب و ضروری می باشد و حتی برای انجام هر عمل کم زمانبر نیز استفاده از Thread ها اکیداً توصیه می گردد.
      اهم خواص Thread ها عبارتند از:
      Thread ها به تنهایی وجود ندارند و باید Process ای د ربرگیرنده آنها باشد.
      Thread های هم والد « هم Process » از یک Memory مشترک استفاده می نمایند که آن نیز Memory اشغال شونده توسطProcess آنها می باشد.
      Thread ها چه هم والد، چه غیر هم والد دارای Stack های جدا هستند.
      با خاتمه یک Thread تأثیری به سایر Thread ها وارد نمی گردد.
      Thread ها دیگر نمی توانند در برگیرنده Thread دیگری باشند.
      اهم خواص Process ها عبارتند از:
      Process  های متفاوت از Memory های متفاوتی استفاده می نمایند.
      Process  های متفاوت از هر نظر مستقل از یکدیگر عمل می نمایند.
      Process  ها می توانند شامل یک و یا بیشتر Thread باشند.
      با خاتمه یک Process، تمامی Thread های آن نیز به ناگاه خاتمه می یابند.
      Process  ها دارای Stack نیستند و در ساده ترین شرایط تنها Thread آنها دارای Stack می باشد.
       
      روش های استفاده از Thread
      برنامه نویسی Thread ها یا اصطلاحا Concurrent Programming بسیار پیچیده می باشد و تکنیک های زیادی دارد. با توجه به این که در این موضوع چندین تألیف حدودا 1000 صفحه ای موجود است، انتظار نداریم حتی 5% آنرا هم بشناسیم. لذا به دو تا از ساده ترین و پرکاربرد ترین روش های استفاده از این تکنیک ها در برنامه نویسی اندروید که در شرایط حتی پیچیده نیز مشکل ما را حل خواهند نمود اکتفا خواهیم نمود.
      آن دو تکنیک عبارتند از :
      Handler
      Handler ما را قادر به افزودن پیام به رشته می سازد که آن را ایجاد کرده و ما را قادر می سازد تا برخی از برنامه های اجرایی را به منظور اجرا در آینده برنامه ریزی نماییم.
      Handler مربوط به رشته اصلی برنامه می باشد. Handler پیام ها و برنامه های اجرایی و پیام های ارسال شده از رشته ها را به رشته برنامه اصلی مدیریت و برنامه ریزی می نماید.
      AsyncTask
      AsyncTask ما را بدون دستکاری رشته ها قادر به اجرای چند رشته می سازد. AsyncTask روش های جدیدی را فراهم می آورد که انجام اقدامات پس زمینه را تسهیل کرده و نتایج را به رشته رابط کاربری انتقال می دهند.
      اگر ما اقدامی مربوط به رابط کاربری نظیر دانلود داده ها برای نمایش در یک فهرست را انجام می دهیم، از AsyncTask استفاده خواهیم نمود.
      AsyncTasks می بایست برای اقدامات کوتاه (چند ثانیه ای) به کار برده شوند.
      public void buttonClick(View view) { Runnable runnable = new Runnable() { public void run() { long endTime = System.currentTimeMillis() + 20*1000; while (System.currentTimeMillis() < endTime) { synchronized (this) { try { wait(endTime - System.currentTimeMillis()); } catch (Exception e) {} } } handler.sendEmptyMessage(0); } }; Thread mythread = new Thread(runnable); mythread.start(); }  
    • توسط ilalia
      من یه thread دارم ، کد زیر:
      Waitpgb.setProgress(0); new Thread(new Runnable() { @Override public void run() { while (Waitpgb.getProgress()<100){ Waitpgb.setProgress(Waitpgb.getProgress()+1); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); میخوام وقتی دوره زمانیش تموم شد یه کاری انجام بده مثلا یه پیغامی نمایش بده،
      چطور باید انجامش بدم؟
    • توسط behrad9912
      سلام اینم یه آموزش خوب مخصوص شما
      ابتدا سمت سرور تو File manager یه فولدر میسازید به اسم upload سپس کنارش یه فایل با پسوند php میسازید و کد زیرو توش قرار میدید.اسم فایل هم upload.php باشه
      <?php $target_path1 = "upload/". basename( $_FILES['uploaded_file']['name']); move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $target_path1); ?>   خب حالا از کد زیر استفاده کنید در سمت اندروید

       
      private void upload(String sfile) {//sfile addrese file roye device int fbyte, buffersize, cbuffer; int maxbuffer = 1024 * 1024; File f = new File(sfile); try { FileInputStream fis = new FileInputStream(f); /////////////////////////// URL url = new URL("");//file samte server /////////////////////////////////////////////// HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setDoInput(true); con.setDoOutput(true); con.setRequestMethod("POST"); con.setUseCaches(false); con.setRequestProperty("Connection", "keep-Alive"); con.setRequestProperty("ENCType", "multipart/form-data"); con.setRequestProperty("Content-Type", "multipart/form-data; boundary=*****"); con.setRequestProperty("uploaded-file", sfile); DataOutputStream dos = new DataOutputStream(con.getOutputStream()); dos.writeBytes("--*****\r\nContent-Disposition: form-data; name=\"uploaded_file\"; filename=\"" + sfile + "\"\r\n\r\n"); fbyte = fis.available(); buffersize = Math.min(fbyte, maxbuffer); byte[] buffer = new byte[buffersize]; cbuffer = fis.read(buffer, 0, buffersize); while (cbuffer > 0) { dos.write(buffer, 0, buffersize); fbyte = fis.available(); buffersize = Math.min(fbyte, maxbuffer); cbuffer = fis.read(buffer, 0, buffersize); } dos.writeBytes("\r\n--*****--\r\n"); if (con.getResponseCode() == 200) { runOnUiThread(new Runnable() { @Override public void run() { Log.e("upload","uploaded"); } }); fis.close(); dos.flush(); dos.close(); } } catch (final Exception e) { runOnUiThread(new Runnable() { @Override public void run() { Log.e("error",e+""); di.dismiss(); } }); } }  
      سوالی بود در خدمتم

  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios
  • فایل