Nonblocking I/O: Fibonacci Producer, Java example Java code example - Click here to copy ->>>
Can't find what you're looking for? Try our search:
|
|
Really working examples categorized by API, package, class. You can compile and run our examples right away!
Not from source code for Java projects - only working examples! Copy, compile and run!
|
------------------
/* Title: Hardcore Java
* Title: Java I/O
* Second Edition: May 2006
* ISBN 10: 0-596-52750-0
* ISBN 13: 9780596527501
*/
| Code: |
import java.io.IOException;
import java.math.BigInteger;
import java.nio.*;
import java.nio.channels.*;
public class FibonacciProducer extends Thread {
private WritableByteChannel out;
private int howMany;
public FibonacciProducer(WritableByteChannel out, int howMany) {
this.out = out;
this.howMany = howMany;
}
public void run() {
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);
}
}
}
|
|
|
References.
The list of classes which were used on this page you can find below. The
links to Java API contain official SUN documentation about all used classes.
[ Go Back ]
|