public void run() {
		int gr, sub, ss, i;
		int granules = owner.granules;
		Synthesis filter = owner.filter;
		float[] xr;

		try {
			while (alive) {
				// 1. 休息
				synchronized (this) {
					while (pause)
						wait();
					pause = true;
				}

				// 2. 干活
				for (gr = 0; gr < granules; gr++) {
					xr = curXR[gr];
					for (ss = 0; ss < 18; ss += 2) {
						for (i = ss, sub = 0; sub < 32; sub++, i += 18)
							samples[sub] = xr[i];
						filter.synthesisSubBand(samples, ch);

						for (i = ss + 1, sub = 0; sub < 32; sub += 2, i += 36) {
							samples[sub] = xr[i];

							// 多相频率倒置(INVERSE QUANTIZE SAMPLES)
							samples[sub + 1] = -xr[i + 18];
						}
						filter.synthesisSubBand(samples, ch);
					}
				}

				// 3. 提交结果
				owner.submitSynthesis();
			}
		} catch (InterruptedException e) {
			//e.printStackTrace();
		}
		//System.out.println(Thread.currentThread().getName() + " shutdown. ");
	}