اذهب إلى المحتوى

السؤال

نشر
اقتباس

 

اقتباس
اقتباس

You have an array on N size with random numbers. Write a multithreaded program that performs the following operations on this array:

Thread 1 sorts the even numbers

Thread 2 sorts the odd numbers

Thread 3 merg the results (even number in the top part of the array).

مطلوب هاد السؤال مني حليت Thread1 و Thread 2,هلا Thread 3 كيف بتنحل علما انو الدكتور طالب انو ما لازم تشتغل الا بعد ما Thread1وThread 2يشتغلوا مع بعض ويخلصوا




import java.util.Scanner;

public class main 
{
	public static void main(String[] args)
	{
	    
	    	int length = 0;
	    Scanner sc=new Scanner(System.in);
	    System.out.print("Length of array:");
	    length=sc.nextInt();
	    int[] array = new int[length];
	    System.out.println("Enter number of array: ");
	 
	    for(int i=0; i<length; i++)
	    {
	        array[i]=sc.nextInt();
	    }
	    
	    
		  

	    ThreadSortEven runnablee=new ThreadSortEven();   
	    runnablee.setArray(array,length);
	    Thread thread1 =new Thread(runnablee);    
	    thread1.start();
	    		  

	    ThreadSortOdd runnable=new ThreadSortOdd();   
	    runnable.setArray(array,length);
	    Thread thread2 =new Thread(runnable);    
	    thread2.start();

	}
}


class ThreadSortEven implements Runnable  {


    int[] array;
    int length;


   public void setArray(int[] array,int length){
       this.array=array;
       this.length=length;
   }


	public void run() {
	
		    System.out.println("-------------------");
		    System.out.println("sorted even array :");
		
		for(int i=0; i<length; i++)
        {
			if (array[i]%2==0) 
			{
			  

		          System.out.println(array[i]);
        	}
        }	
	}
	

}




class ThreadSortOdd implements Runnable  {


    int[] array;
    int length;


   public void setArray(int[] array,int length){
       this.array=array;
       this.length=length;
   }


	public void run() {
	
		    System.out.println("-------------------");
		    System.out.println("sorted odd array :");
		
		for(int i=0; i<length; i++)
        {
			if (array[i]%2!=0) 
			{
			 
		          System.out.println(array[i]);
        	}
        }	
	}
	

}

 

 

 

Recommended Posts

  • 0
نشر

يمكنك استعمال التابع join على thread1, thread2 و عندها سيتم الانتظار حتى نهاية تنفيذهما ليتم تنفيذ ما تبقى من الكود.

أي يمكنك اعتبار join تقوم بدمج مساري التنفيذ في المسار الأساسي و بالتالي لن يتم تنفيذ أي شيء بعد حتى ينتهي تنفيذهما.

بعدها يمكنك كتابة الكود الخاص بالدمج بشكل طبيعي ك thread3 و سيتم تنفيذها بعد نهاية تنفيذ ما سبق.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...