package hdf5;
            
            
            import java.io.PrintStream;
            import java.util.Arrays;
            import java.util.Random;
            
            
            import ch.systemsx.cisd.hdf5.HDF5Factory;
            import ch.systemsx.cisd.hdf5.IHDF5SimpleReader;
            import ch.systemsx.cisd.hdf5.IHDF5SimpleWriter;
            
            
            public class Hdf5Test {
            	static
              final String hdf5FileName = "myfile.h5";
            	static
              final String tag = "mydata";
            
            
            	public
              static void main(final String[] args) {
            
            
            		//
              write thread
            		new
              Thread(new Runnable() {
            			@Override
            			public
              void run() {
            				final
              IHDF5SimpleWriter writer = HDF5Factory.open(hdf5FileName);
            				final
              Random r = new Random();
            				for
              (int i = 0; i < 10; i++) {
            					pause(500);
            					final
              float[] data = "" float[1000];
            					for
              (int n = 0; n < data.length; n++) {
            						data[n]
              = r.nextFloat() * 10000f;
            					}
            					writer.writeFloatArray(tag
              + i, data);
            					printData(data,
              5, System.out);
            				}
            				writer.close();
            			}
            		}).start();
            
            
            		pause(1000);
            		//
              read thread
            		new
              Thread(new Runnable() {
            			@Override
            			public
              void run() {
            				final
              IHDF5SimpleReader reader = HDF5Factory.open(hdf5FileName);
            				for
              (int i = 0; i < 10; i++) {
            					pause(600);
            					float[]
              mydata = new float[1000];
            					mydata
              = reader.readFloatArray(tag + i);
            					printData(mydata,
              5, System.err);
            				}
            				reader.close();
            			}
            		}).start();
            
            
            	}
            
            
            	private
              static void pause(final int millisecond) {
            		try
              {
            			Thread.sleep(millisecond);
            		}
              catch (final InterruptedException e) {
            			e.printStackTrace();
            		}
            	}
            
            
            	private
              static void printData(final float[] data, final int size,
              final PrintStream out) {
            		if
              ((data == null) || (data.length < size)) {
            			return;
            		}
            		final
              float[] temp = new float[size];
            		System.arraycopy(data,
              0, temp, 0, size);
            		out.println(Arrays.toString(temp));
            	}
            }