0% found this document useful (0 votes)
30 views

Multi Threading Example

The document contains code for three Java classes - FibonacciGenerator, PrimeGenerator and Receiver. FibonacciGenerator and PrimeGenerator extend Thread and generate Fibonacci numbers and prime numbers respectively up to 100,000 by writing them to PipedWriters. Receiver reads from the PipedWriters concurrently and prints any numbers that match between the two sequences.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

Multi Threading Example

The document contains code for three Java classes - FibonacciGenerator, PrimeGenerator and Receiver. FibonacciGenerator and PrimeGenerator extend Thread and generate Fibonacci numbers and prime numbers respectively up to 100,000 by writing them to PipedWriters. Receiver reads from the PipedWriters concurrently and prints any numbers that match between the two sequences.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

REG NO:41409104030

CODING:
FibonacciGenerator.java
import java.io.IOException;
mport java.io.PipedWriter;
public class FibonacciGenerator extends Thread
{
private PipedWriter fibWriter=new PipedWriter();
public PipedWriter getPipedWriter()
{
return fibWriter;
}
public void run()
{
super.run();
generateFibonacci();
}
private int f(int n)
{
if(n<2)
{
return n;
}
else
{
return f(n-1)+f(n-2);
}
}
public void generateFibonacci()
{
for(int i=2,fibValue=0;(fibValue=f(i))<100000;i++)
{
try
{
fibWriter.write(fibValue);
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)

REG NO:41409104030
{
new FibonacciGenerator().generateFibonacci();
}
}
Main.java
import java.io.IOException;
public class Main
{
public static void main(String[] args)throws IOException
{
FibonacciGenerator fibonacciGenerator =new FibonacciGenerator ();
PrimeGenerator primeGenerator=new PrimeGenerator();
Receiver receiver=new Receiver(fibonacciGenerator,primeGenerator);
fibonacciGenerator.start();
primeGenerator.start();
receiver.start();
}
}

PrimeGenerator.java
import java.io.IOException;
import java.io.PipedWriter;
public class PrimeGenerator extends Thread
{
private PipedWriter primeWriter=new PipedWriter();
public PipedWriter getPipedWriter()
{
return primeWriter;
}
public void run()
{
super.run();
generatePrime();
}
public void generatePrime()
{
for(int i=2;i<100000;i++)
{
if(isPrime(i))
{
try

REG NO:41409104030
{
primeWriter.write(i);
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
}
private boolean isPrime(int n)
{
boolean prime=true;
int sqrtValue=(int)Math.sqrt(n);
for(int i=2;i<=sqrtValue;i++)
{
if(n%i==0)
{
prime=false;
}
}
return prime;
}
public static void main(String[] args)throws IOException
{
PrimeGenerator gene=new PrimeGenerator();
gene.generatePrime();
}
}

Receiver.java
import java.io.IOException;
import java.io.PipedReader;
class Receiver extends Thread
{
private PipedReader fibReader;
private PipedReader primeReader;
public Receiver(FibonacciGenerator fib,PrimeGenerator prime)throws IOException
{
fibReader=new PipedReader(fib.getPipedWriter());
primeReader=new PipedReader(prime.getPipedWriter());
}
public void run()
{

REG NO:41409104030
int prime=0;
int fib=0;
try
{
prime=primeReader.read();
fib=fibReader.read();
}
catch(IOException e1)
{
e1.printStackTrace();
}
while(true)
{
try
{
if(prime==fib)
{
System.out.println("MATCH :: "+prime);
prime=primeReader.read();
fib=fibReader.read();
}
else if(fib<prime)
{
fib=fibReader.read();
}
else
{
prime=primeReader.read();
}
}
catch(IOException e)
{
System.exit(-1);
}
}
}
}

You might also like