@Override
	public void seek(long pFrame) throws MusicPlayerException {
		this.mLock.lock();
		try {
			if ( !this.canSeek() ) {
				throw new IllegalStateException( "can't seek" );
			}
			if ( !this.mStreamPlayerRunnable.isStopped() &&
					!this.mStreamPlayerRunnable.isDone() ) {
				this.mStreamPlayerRunnable.seek( pFrame );
			}
			else {
				this.restart();
			}
		}
		finally {
			this.mLock.unlock();
		}
	}