@Override
	public void run() {
		int translated = 0;
		double [] tdouble = null;
		while( translated < this.size )
		{
			try {
				w.acquire();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				continue;
			}
			synchronized(this.datas)
			{
				tdouble = this.datas.remove();
			}
			
			for(int i = 0; i < tdouble.length; i++)
			{
				src.getChunkByOff(translated++);
				dst.getChunkByOff(ChunkTranslater.offTranslate(src));
				data[dst.getOffset()] = tdouble[i];
			}
		}
		try {
			this.writer.writeDouble(this.data);
			this.writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}