FileDocCategorySizeDatePackage
FibonacciProducer.javaAPI DocExample1327Tue Feb 14 10:46:08 GMT 2006None

FibonacciProducer

public class FibonacciProducer extends Thread

Fields Summary
private WritableByteChannel
out
private int
howMany
Constructors Summary
public FibonacciProducer(WritableByteChannel out, int howMany)

    this.out = out;
    this.howMany = howMany;
  
Methods Summary
public voidrun()

   
    BigInteger low = BigInteger.ONE;
    BigInteger high = BigInteger.ONE;
    try {
       ByteBuffer buffer = ByteBuffer.allocate(4);
       buffer.putInt(this.howMany);
       buffer.flip();
       while (buffer.hasRemaining()) out.write(buffer);
       
       for (int i = 0; i < howMany; i++) {
        byte[] data = low.toByteArray();
        // These numbers can become arbitrarily large, and they grow
        // exponentially so no fixed size buffer will suffice.
        buffer = ByteBuffer.allocate(4 + data.length);
        
        buffer.putInt(data.length);
        buffer.put(data);
        buffer.flip();
        
        while (buffer.hasRemaining()) out.write(buffer);
        
        // find the next number in the series
        BigInteger temp = high;
        high = high.add(low);
        low = temp;
      }
      out.close();
      System.err.println("Closed");
    }
    catch (IOException ex) {
      System.err.println(ex);
    }