الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Getting value From Threads

بدأه johnIV في 22 يونيو 2012 · 4 رد · 745 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله تعالى و بركاته

سؤال : هل يكمن اعادة قيمة من الـ java thread ؟؟؟

من خلال البحث و جدت الواجهة Callable , بس كان تطيبقها صعب و ما عطيتني نتائج اللي كان بدي ياها

أرجو المساعدة

بسم الله الرحمن الرحيم
وَلَنَبْلُوَنَّكُمْ بِشَيْءٍ مِنَ الْخَوْفِ وَالْجُوعِ وَنَقْصٍ مِنَ الأَمْوَالِ وَالأَنْفُسِ وَالثَّمَرَاتِ وَبَشِّرِ الصَّابِرِينَ (155) الَّذِينَ إِذَا أَصَابَتْهُمْ مُصِيبَةٌ قَالُوا إِنَّا لِلَّهِ وَإِنَّا إِلَيْهِ رَاجِعُونَ (156) أُولَئِكَ عَلَيْهِمْ صَلَوَاتٌ مِنْ رَبِّهِمْ وَرَحْمَةٌ وَأُولَئِكَ هُمُ الْمُهْتَدُونَ (157) صدق الله العظيم

---------------------------------------------------------------------
مضى عامانِ يا أمي
وليلُ دمشقَ
فلُّ دمشقَ
دورُ دمشقَ
تسكنُ في خواطرنا
مآذنها.. تضيءُ على مراكبنا
كأنَّ مآذنَ الأمويِّ..
قد زُرعت بداخلنا..
كأنَّ مشاتلَ التفاحِ..
تعبقُ في ضمائرنا
كأنَّ الضوءَ، والأحجارَ
جاءت كلّها معنا..

-------------------------------------------------------------------------

#2

ما هي مشكلة ال Callable ؟

1

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3
johnIV كتب:

السلام عليكم و رحمة الله تعالى و بركاته

سؤال : هل يكمن اعادة قيمة من الـ java thread ؟؟؟

من خلال البحث و جدت الواجهة Callable , بس كان تطيبقها صعب و ما عطيتني نتائج اللي كان بدي ياها

أرجو المساعدة

نعم بمكن اعادة قيمة من ال thread

شوووف هذا الكود

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Callble;

/**
 *
 * @author bach
 */
//import java.awt.List;
import java.util.ArrayList;
import java.util.concurrent.*;

//import org.omg.CORBA.IntHolder;
public class testcall 
{
  public static void main(String[] args ) throws InterruptedException, ExecutionException
  {
	  int [] tab={10,1,8,3,2,0,0};
	  int N=4;

	  ArrayList<Future<int[]>> list=new ArrayList<Future<int[]>>();

	 //ArrayList<Future<Integer>> list=new ArrayList<>();

	  ExecutorService pool =  Executors.newFixedThreadPool(1);
	  sommes s=new sommes(tab,0,tab.length-1);
	  Future<int[]>f=pool.submit(s);
	  for(int k=0;k<7;k++)
	  {
            list.add(f);
	  // pool.submit(s);
	  //FutureTask<Integer> f=new FutureTask<Integer>(s);
	  }
      pool.shutdown();

      int[] k={0,0,0,0};
      int i=0;
      for(Future<int[]>x:list)
      {
    	  k=x.get();
    	  System.out.println("tab["+i+"]=" +k);
    	  i++;
      }

  }
}

و الأن الكلاس بال callable تعيد array type integer

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Callble;

/**
 *
 * @author bach
 */
import java.util.concurrent.*;


public class sommes implements Callable<int[]> 
{
	int d,f,t[];
	int u=0;
	public sommes(int[] x,int d,int f)
	{
		t=x;
		this.d=d;
		this.f=f;
	}

	public int[] call () throws java.io.IOException
	{ 

		      //partition( t, d,  f);
	          //System.out.print(" " +s);


		//System.out.println("" +f);
		triRapide( t, d,  f);
		/*for(int i=0;i<5;i++)
		{
			System.out.println("" +t);	
		}*/
		return t; 
	}

      	public void permuter(int[] t, int i, int j) 
	    {
          int temp = t;
          t = t[j];
          t[j] = temp;

         }

        public int partition(int[] t, int d, int f) 
        {

         int v = t[d]; // valeur pivot


         int i = d-1;
         int j = f+1;

         System.out.println("v=" +v);
         System.out.println("i=" +i);
         System.out.println("j=" +j);

         boolean b=true;
         while(b) {
                do {
                         j--;
                } while(t[j] > v);
                do {
                         i++;
                } while(t < v);
                if(i < j) 
                {
                         permuter(t, i, j);
                } else {

                      b=false;
                }
        }
		return j;

}

      public void triRapide(int[] t, int d, int f) 
        {
        	if(d < f)
        	{
        		int p = partition(t, d, f);
        	/*  for(int i=0;i<p;i++)
      	      {

      	    	  System.out.println("tab_one["+i+"]=" +t);
      	    	  i++;
      	      }*/

        		triRapide(t, d, p);
        		triRapide(t, p+1, f);
        	}

        }

}
2

Just Be Nice

#4

شكر للمرور و الاهتمام و سبب التاخير بالرد هو انشغالي بعدة مشاريع موخرا

المشكلة كانت بالcallables هو ان التابع call يعيد قيمة interger حسب الـ java api وكان بدنا حل سريع و هلا مشي الحال

و الحل بسيط

وانا كنت عم استرجع resultset من ال DataBase و عم خزنها ب List والـ List هي القيمة المعادة من الـ Thread

حل المشكلة هو التالي :

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class testcallable {
	public static void main(String[] args) throws ExecutionException,
			InterruptedException {
		Callable callable = new Callable() {
			private boolean add;

			@Override
			public List<Integer> call() throws Exception {
				List<Integer> List1 = new ArrayList<Integer>();
				add = List1.add(1);
				return List1;
			}
		};

		ExecutorService service = Executors.newFixedThreadPool(2);
		Future<List<Integer>> result = service.submit(callable);

		List<Integer> intArray = result.get();
		System.out.println(intArray.get(0).toString());

	}
}

بسم الله الرحمن الرحيم
وَلَنَبْلُوَنَّكُمْ بِشَيْءٍ مِنَ الْخَوْفِ وَالْجُوعِ وَنَقْصٍ مِنَ الأَمْوَالِ وَالأَنْفُسِ وَالثَّمَرَاتِ وَبَشِّرِ الصَّابِرِينَ (155) الَّذِينَ إِذَا أَصَابَتْهُمْ مُصِيبَةٌ قَالُوا إِنَّا لِلَّهِ وَإِنَّا إِلَيْهِ رَاجِعُونَ (156) أُولَئِكَ عَلَيْهِمْ صَلَوَاتٌ مِنْ رَبِّهِمْ وَرَحْمَةٌ وَأُولَئِكَ هُمُ الْمُهْتَدُونَ (157) صدق الله العظيم

---------------------------------------------------------------------
مضى عامانِ يا أمي
وليلُ دمشقَ
فلُّ دمشقَ
دورُ دمشقَ
تسكنُ في خواطرنا
مآذنها.. تضيءُ على مراكبنا
كأنَّ مآذنَ الأمويِّ..
قد زُرعت بداخلنا..
كأنَّ مشاتلَ التفاحِ..
تعبقُ في ضمائرنا
كأنَّ الضوءَ، والأحجارَ
جاءت كلّها معنا..

-------------------------------------------------------------------------

#5

يظهر لي من الكود وأسلوب الاستخدام أن العملية submit تقوم بتنفيذ تعليمة wait

فهل أنا محق؟ وإن كان كذلك ما الفائدة من تعدد الخيوط بالنسبة لكم؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة