Anna University Results November - December 2011 available with your GPA only for Credit System

Exam Results 2012

Exam Results 2012 Inspirational Quotes

Saturday, September 25, 2010

Multi Thread Using Pipe in Java Program


 /* Multi Thread Using Pipe in Java Program */

import java.util.*;
import java.io.*;

class Fibonacci extends Thread
{
  private PipedWriter out = new PipedWriter();
  public PipedWriter getPipedWriter()
  {
    return out;
  }
  public void run()
  {
    Thread t = Thread.currentThread();
    t.setName("Fibonacci");
    System.out.println(t.getName() + " thread started");
    int fibo1=0,fibo2=1,fibo=0;
    while(true)
    {
      try
      {
        fibo = fibo1 + fibo2;
        if(fibo>100000)
        {
          out.close();
          break;
        }
        out.write(fibo);
        sleep(1000);
      }
      catch(Exception e)
      {
        System.out.println("Fibonacci:"+e);
      }
      fibo1=fibo2;
      fibo2=fibo;
    }
    System.out.println(t.getName() + " thread exiting");
   
  }
}
class Prime extends Thread
{
  private PipedWriter out1 = new PipedWriter();
  public PipedWriter getPipedWriter()
  {
    return out1;
  }
  public void run()
  {
    Thread t= Thread.currentThread();
    t.setName("Prime");
    System.out.println(t.getName() + " thread Started...");
    int prime=1;
    while(true)
    {
      try
      {
        if(prime>100000)
        {
          out1.close();
          break;
        }
        if(isPrime(prime))
          out1.write(prime);
        prime++;
        sleep(0);
      }
      catch(Exception e)
      {
        System.out.println(t.getName() + " thread exiting.");
        System.exit(0);
      }
    }
  }
  public boolean isPrime(int n)
  {
    int m=(int)Math.round(Math.sqrt(n));
    if(n==1 || n==2)
      return true;
    for(int i=2;i<=m;i++)
      if(n%i==0)
         return false;
      return true;
  }
}
public class PipedIo
{
  public static void main(String[] args) throws Exception
  {
    Thread t=Thread.currentThread();
    t.setName("Main");
    System.out.println(t.getName() + " thread Started...");
    Fibonacci fibonacci = new Fibonacci();
    Prime prime = new Prime();
    PipedReader fpr = new PipedReader(fibonacci.getPipedWriter());
    PipedReader ppr = new PipedReader(prime.getPipedWriter());
    fibonacci.start();
    prime.start();
    int fib=fpr.read(), prm=ppr.read();
    System.out.println("The numbers common to PRIME and FIBONACCI:");
    while((fib!=-1) && (prm!=-1))
    {
      while(prm<=fib)
      {
        if(fib==prm)
          System.out.println(prm);
        prm=ppr.read();
      }
      fib=fpr.read();
    }
    System.out.println(t.getName() + " thread exiting");
  }
}
 
OUTPUT :

Main thread Started...
Fibonacci thread started
Prime thread Started...
The numbers common to PRIME and FIBONACCI:
1
2
3
5
13
89
233
1597
28657
Fibonacci thread exiting
Main thread exiting
Prime thread exiting.

If u find any flaws, Contact to M.Baran Mahamood

No comments: