public int startOperations(final int startKey, final Object value) throws Exception {


    final int NUM_THREADS = 5;
    final long OPS_PER_THREAD = OPS_PER_ITERATION / NUM_THREADS;
    Thread[] operations = new Thread[NUM_THREADS];
    System.out.println(
        "Starting " + NUM_THREADS + " threads to do each do " + OPS_PER_THREAD + " operations");
    for (int i = 0; i < NUM_THREADS; ++i) {
      operations[i] = new Operation(i, region, value, startKey, OPS_PER_THREAD);
    }

    for (int i = 0; i < NUM_THREADS; ++i) {
      operations[i].start();
    }
    // synchronized(this) {
    // this.wait(operationTimeInSec*1000);
    // }

    // for (int i = 0; i < NUM_THREADS; ++i) {
    // ((Operation)operations[i]).signalHalt();
    // }

    for (int i = 0; i < NUM_THREADS; ++i) {
      operations[i].join();
    }
    int regionSize = region.size();
    System.out.println("Total Region Size at end = " + region.size());
    return regionSize;
  }
Disk region recovery test for Persist only with sync writes. Test has four steps : STEP 1:
Create cache. Create Region. Put entries. Close cache. STEP 2: Create cache. Create Region with
the same name as that of in STEP 1. Delete some entries. 3) Recreate the deleted entries Close
the Cache * 3: Again Create cache. 4) check if the region creation is successful
geode-core/src/integrationTest/java/org/apache/geode/internal/cache/DiskRandomOperationsAndRecoveryJUnitTest.java