Showing posts with label Multi threading. Show all posts
Showing posts with label Multi threading. Show all posts

Saturday, March 17, 2018

ஜாவாவும் மல்டிதிரட்டிங்கும்(பகுதி-6)



கீழே உள்ள நிரலில் இரண்டு சைல்ட் திரட்டுகள் உருவாக்கப் பட்டுள்ளது.
இரண்டு சைல் திரட்டுகளும் ஒரு மெயின் திரட்டும் சிபியூவின் மெமரியை பங்கீட்டுக் கொள்கின்றன. மெயின் திரட்டானது 6 செகண்டிற்கு சிலீப் செய்கின்றது.
package multiplethread;
class newThreadClass implements Runnable
{
    String ThreadName;
    newThreadClass(String name)
    {
        ThreadName=name;
        Thread t=new Thread(this,ThreadName);
        System.out.println("thread created: "+t);
        t.start();
    }
    public void run()
    {
        try
        {
            for(int i=1;i<=5;i++)
            {
                System.out.println(ThreadName +"loop"+i);
                Thread.sleep(2000) ;
            }
        }
        catch(InterruptedException e)
        {
            System.out.println("thread: "+ThreadName+ "interrupted");
        }
        System.out.println(ThreadName+" is exiting");
               
   }
}

public class MultipleThread {

  
    public static void main(String[] args) {
        new newThreadClass("first child thread");
        new newThreadClass("second child thread");
        try
        {
            for(int i=1;i<=5;i++)
            {
                System.out.println("Main thread loop"+i);
               
                Thread.sleep(6000) ;
            }
        }
        catch(InterruptedException e)
        {
            System.out.println("main thread interrupted");
        }
        System.out.println("main thread exiting");
    }
   
}
வெளியீடு:
run:
thread created: Thread[first child thread,5,main]
thread created: Thread[second child thread,5,main]
first child threadloop1
Main thread loop1
second child threadloop1
first child threadloop2
second child threadloop2
first child threadloop3
second child threadloop3
Main thread loop2
first child threadloop4
second child threadloop4
second child threadloop5
first child threadloop5
first child thread is exiting
second child thread is exiting
Main thread loop3
Main thread loop4
Main thread loop5
main thread exiting
BUILD SUCCESSFUL (total time: 30 seconds)
 
தொடரும்.
முத்து கார்த்திகேயன்,மதுரை.
ads Udanz

Friday, March 16, 2018

ஜாவாவில் மல்டி திரட்டிங் பகுதி-4



RUNNABLE INTERFACE –உபயோகப்படுத்தி எவ்வாறு ஜாவாவில் எவ்வாறு மல்டி திரடிங்க் செய்வது எப்படி என்பது பற்றி பார்ப்போம்.
பொதுவாக ஜாவாவில் மல்டிபிள் இன்ஹெரிடன்ஸ் கிடையாது . அதாவது ஒரு கிளாஸ் ஆனது ஒன்றுக்கு மேற்பட்ட கிளாஸை இன்ஹெரிட் செய்ய இயலாது. பொதுவாக ஆப்லெட்கள் Applet class-யை இன்ஹெரிட் செய்யும். அதனால் thread class –யை இன்ஹெரிட் செய்ய இயலாது. அதற்கு மாற்றாக runnable இன்டெர்ஃபேஸை பயன் படுத்தலாம். ஏனெனில் ஒரு கிளாஸ் எத்தனை இன்டெர்ஃபேஸையும் இம்ப்ளிமென்ட் செய்யலாம்.
சிண்டாக்ஸ்:
Public void run()
மேலே உள்ள கோடிங்க் எவ்வாறு ரன்னபிள் இன்டெர்ஃபேஸை எவ்வாறு அறிவிப்பது என்று உள்ளது.
Start() என்கின்ற மெதடை அழைக்கும் பொழுது run() மெதட் இயங்குகின்றது.
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package threadclass;
class NewThread implements Runnable
{
    Thread t;
    NewThread()
    {
        t=new Thread(this,"chid thread");
        System.out.println("child thread:"+t);
        t.start();
    }
    public void run()
    {
        System.out.println("child thread started");
        System.out.println("Exiting child thread");
    }
}
   
   
   
   
   

/**
 *
 * @author ABINAYA
 */
public class ThreadClass {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       new NewThread();
       System.out.println("Main thread started");
       try
       {
           Thread.sleep(5000);
          
       }
       catch(InterruptedException e)
               {
                 System.out.println("The main thread interrupted")  ;
                
               }
       System.out.println("Exiting the main thread");
    }
   
}
வெளியீடு:
run:
child thread:Thread[chid thread,5,main]
Main thread started
child thread started
Exiting child thread
Exiting the main thread
BUILD SUCCESSFUL (total time: 5 seconds)
மேலே உள்ள நிரலில் NewThread கிளாஸில் அதன் கன்ஸ்ட்ரக்டர் this, child thread என்கின்ற இரு ஆர்க்யூமெண்ட்களை பயன்படுத்தி ஒரு புதிய திரட்டை உருவாக்குகின்றது. அந்த புதிய திரட்டின் பெயர் childthread என உள்ளது. Start() மெதட் run() என்கின்ற மெதடை அழைக்கின்றது. அதற்கு கண்ட்ரோல் மெயின் திரட்டிற்கு மாறுகின்றது. மெயின் திரட் 5 செகண்டிற்கு ஸ்லீப் செய்கின்றது. அத்துடன் பிறகு மெயின் திரட்டும் முடிகின்றது.
-தொடரும்
முத்து கார்த்திகேயன்,மதுரை.

ads Udanz

Tuesday, March 13, 2018

ஜாவாவில் மல்டி திரட்டிங்க் –பகுதி-2




Thread கிளாஸ்.
Java.lang.Thread கிளாஸ் ஆனது ஒரு திரட்டை உருவாக்கவும் மற்றும் ஒரு திரட்டை ஆக்சஸ் செய்யவும் பயன்படுகின்றது. Thread class அல்லது Runnable interface பயன்படுத்தி ஒரு மல்டி திரட் அப்ளிகேசனை உருவாக்கலாம்.
Thread கிளாஸ் ஆனது  நிறைய மெதட்களை கொண்டுள்ளது. அவற்றிலிருந்து ஒரு திரட்டின் வெவ்வேறு செயல்பாடுகள் அதாவது ஒரு திரட்டின் பண்புகளை பெறுதல், ஒரு திரட்டை குறிப்பிட்ட மணித்துளிக்கு வெய்ட் செய்யவைத்தல், அதை மீண்டும் resume செய்தல் மற்றும் ஒரு திரட்டை destroy செய்தல்.
முக்கியமான மெதட்கள்:
1.   getPriority()- ஒரு திரட்டின் பீரியாரிட்டியை ரிடர்ன் செய்கின்றது.
2.   isAlive()-ஒரு திரட் ஆனது இயங்கிக் கொண்டிருக்கின்றதா என்பதை ரிடர்ன் செய்கிறது.
3.   Sleep()-ஒரு திரட்டை குறிப்பிட்ட மணித்துளிகளுக்கு பாஸ்(pause) செய்ய பயன்படுகின்றது.
4.   getName()-ஒரு திரட்டின் பெயரை ரிடர்ன் செய்கின்றது.
5.   Start()-run()-மெத்தடை அழைப்பதன் மூலம் ஒரு திரட்டை ஸ்டார்ட் செய்கின்றது.
மெயின் திரட்
ஒரு மல்டி திரட் அப்ளிகேசனில் முதலாவது இயங்குவது மைன் திரட் ஆகும். இது ஒரு ஜாவா புரோகிராமை இயக்கும் பொழுது ஆட்டோமேடிக் ஆக இயங்குகின்றது. currentThread()- என்கின்ற மெத்தடை பயன்படுத்தி ஒரு திரட்டை ஆக்சஸ் செய்யலாம்.
சான்று நிரல்-1
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package mainthreaddemo;

/**
 *
 * @author ABINAYA
 */
public class MainThreadDemo {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Thread t=Thread.currentThread();
        System.out.println("The current thread "+t);
        t.setName("Main Thread");
        System.out.println("the name of thread after name changing "+t);
        System.out.println("the current thread is going to sleep for 10 seconds");
        try
        {
            t.sleep(10000);
           
        }
        catch(InterruptedException e)
        {
            System.out.println("Main thread interrupted");
        }
        System.out.println("after 10 seconds the threading is exit now.");
    }
   
}
மேலே உள்ள நிரலில் setName()-மெதட் மூலம் திரட்டுக்கு பெயர் வைக்கப்படுகின்றது.மேலும் sleep()- என்கின்ற மெதட் மூலம் 10 செகண்டுகளுக்கு திரட் ஆனது pause செய்யபடுகின்றது. Sleep() மெதட் எர்ரர் பிழை சுட்டப்படலாம் என்பதற்காக try-catch block இடையே அழைக்கப்படுகிற்து
வெளியீடு:
run:
The current thread Thread[main,5,main]
the name of thread after name changing Thread[Main Thread,5,main]
the current thread is going to sleep for 10 seconds
after 10 seconds the threading is exit now.
BUILD SUCCESSFUL (total time: 10 seconds)
தொடரும்

ads Udanz

ஜாவாவில் மல்டிதிரட்டிங்-பகுதி 1




திரட் என்பது என்ன?
இது புரோகிராமிங் இயங்கும் பாதையாகும்.இது ஒரு நிரலின் தொடர்ச்சியான கட்டளை ஆகும்.இது நிரலின் சிறிய யூனிட் ஆகும். இது சிபியூ ஆனது ஒரே நேரத்தில் வெவ்வேறு செயல்களை செய்கின்றது.உதாரணமாக ஒரு டெக்ஸ்ட் ஃபைலை எழுதுதல் மற்றும் ப்ரின்ட் செய்தல், ஒரு மென்பொருளை நிறுவுதல் மற்றும் ஸ்டேட்டஸ் பாரில் தற்போதைய தேதி, நேரத்தை காண்பித்தல் ஆகிய பல செயல்களை ஒரே நேரத்தில் செய்கின்றது.
மல்டிதிரட்டிங்க் அடிப்படைகள்:
சிங்கிள் திரட் அப்ளிகேசன் என்பது ஒரு நேரத்தில் ஒரு செயலை தான் செய்யும். முதலில் வந்த பிராசஸ் முடிந்த பிறகு தான் அடுத்த பிராசஸ் தொடங்கும். மல்டி திரட் ஆனது கணினியானது சிக்கலான கணக்கீடுகளின் போது பயன்படுகின்றது. மல்டி திரட் ஆனது ஒரே நேரத்தில் ஒரு நிரலின் ஒன்றுக்கும் மேற்பட்ட பகுதிகளை இயக்க பயன்படுகின்றது. ஒவ்வொரு நிரலும் ஒரு திரட்டாவது கொண்டிருக்கும் நாம் விரும்பும் பட்சத்தில் அதிக திரட்டுகளைச் சேர்த்து கொள்ளலாம்.
மைக்ரோ பிராசஸர் ஆனது பிராசஸுக்கு மெமரி ஒதுக்கீடு செய்கின்றது. ஒவ்வொரு பிராசஸும் நிணைவகமையும் அதன் முகவரியையும் கொண்டிருக்கின்றது. ஒரு நிரலின் எல்லா திரட்டுகளும் ஒரே நிணைவக முகவரியை கொண்டிருக்கும்.
மல்டி திரட்டிங்கின் இரு வகைகள்:
1.   பிராசஸ் அடிப்படையிலான மல்டி டாஸ்க்கிங்க்
2.   திரட் அடிப்ப்டையில் ஆன மல்டி டாஸ்க்கிங்.
பிராசஸ் அடிப்படையிலான மல்டி டாஸ்கிங்க் :
ஒரு பிராசஸ் என்பது பிராசஸரால் இயக்கப்ப்டும் நிரலாகும். பிராசஸ் அடிப்படையிலான மல்டி டாஸ்கிங்க் ஆனது ஜாவா ஆனது ஒரு நிரலில் இருந்து அடுத்த நிரலுக்கு மாறுவதை செய்ய உதவுதாகும். இப்பொழுது எல்லா நிரல்களும் ஒரே நேரத்தில் இயங்கிக் கொண்டிருக்கும்.உதாரணமாக வெப் டாக்குமெண்டை பிரிண்ட் எடுத்துக் கொண்டே மீடியா பிளேயரில் பாட்டு கேட்பது ஆகும்
பிராசஸ் அடிப்ப்டையிலான மல்டி திரட்டிங்க் ஆனது ஒரே நேரத்தில் ஒன்றுக்கு மேற்கண்ட நிரல்களை இயக்குவதாகும். இவை வெவ்வேறு நிணைவகங்களின் இயங்குவதால் ஒன்றில் இருந்து அடுத்த நிரல்லுக்கு ஸ்விட்ச் ஒவர் செய்வது ஹெவி வெய்ட் ஆகும்.
திரட் அடிப்ப்டையிலான மல்டி டாஸ்க்கிங்க்:
ஒரே நிரலில் அதன் வெவ்வறு திரட்டுகள் இயங்குவது ஆகும். உதாரணமாக ஒரு டெக்ஸ்ட் ஃபைல் ஒன்றை ஃபார்மட் செய்து கொண்டே பிரிண்ட் செய்வது போல் ஆகும் . இவை வெவ்வேறு திரட்டுகள் என்றாலும் ஒரே புரோகிராம் என்பதால் ஒன்றில் இருந்து மற்ற திரட்டுக்கு மாறுவது என்பது லைட் வெய்ட் ஆகும். ஏனெனில் ஒரே மெமரி அட்ரஸில் இயங்குவதால்.
மல்டி திரட்டிங்க் நண்மைகள்
1.   பெர்ஃபாமன்ஸ்:ஓரு நிரலின் கணக்கீடலையும் இன்புட், அவுட்புட் ஆகியவையும் ஒரே நேரத்தில் இயங்குவதால் பெர்ஃபாமன்ஸ் அதிகரிக்கின்றது.
2.    சிஸ்டம் பயன்பாட்டுக் குறைவு
3.   வெவ்வேறு அப்ளிகேசனை ஒரே நேரத்தில் அணுகுதல்.
4.   சிக்கலான கணக்கீட்டு பயன்பாடுகளை சுலபமாக்குகின்றது.
மல்டி திரட்டிகிங்கின் தீமைகள்:
1.   ஒன்றுக்கு மேற்பட்ட திரட்டுகள் ஒரே நேரத்தில் ஒரு வேரியபிளை அணுகுதல் ஆகும் பொழுதும் ஒரு திரட்டாவது அந்த வேரியபிளை எழுதும் பொழுதும் சிக்கல் ஆகின்றது.
2.   டெட்லாக்: இரு திரட்டுகள் முடிவடைவதற்கு ஒன்றை ஒன்று சார்ந்திருக்கும் பொழுது டெட்லாக் எனப்படும் நிலை ஏற்படுகின்றது..
3.   லோ திரட் பீரியாரிட்டி காரணமாக குறிப்பிட்ட திரட் ஆனது இயங்க முடியாமல் இருக்க நேரிடுதல்.

 -தொடரும்.
முத்து கார்த்திகேயன்,மதுரை.
ads Udanz