Question: ```
       for (int rowNum = 1; rowNum < sheet.getLastRowNum(); rowNum++) {
            Row row = sheet.getRow(rowNum);
            Employee instance = methodToGetInstance(parameters);
            originalList.add(instance);
        }
        List<Employee> copy = new ArrayList<>(originalList);
        List<Employee> totalCopy = new ArrayList<>(originalList);
        while (startDate.isBefore(ChronoLocalDate.from(SecurityUtils.now().plusMonths(3)))) {
            int index = 0;
            for (Employee instance : copy) {
                instance.setStartDateTime(startDateTime);       //here i'm updating the value in copyList
                instance.setEndDateTime(startDateTime.plusHours(24));
                totalCopy.add(instance);               
                index++;
            }
        }

```

Here i m updating values in instance which is from Copied List it also affecting the OriginalList.

Please help me to resolve this issue...!!

Answer: 
They are completely different.

Using `async`/`await` allows you to consume Promises in a flat manner in your code, without nesting callbacks or hard-to-read `.then` chains. For example:

```
const doSomething = async () => {
  await asyncStep1();
  await asyncStep2();
  await asyncStep3();
};

```

where each async step returns a Promise.

`await` only allows you to "delay" code in a block if you already have a Promise to work with (or something that you convert to a Promise).

`setTimeout` is not similar at all to `async`/`await` - `setTimeout` doesn't consume a Promise or have anything to do with Promises at all. `setTimeout` allows you to queue a callback to be called later, after the timeout time has finished.

Unlike `await`, `setTimeout` does not delay code in a block - rather, you pass it a *callback*, and the callback gets called later.
Both async await and setTimeout aren't similar eventhough it looks like they are but they aren't.
If you are new to JavaScript then, you can think of setTimeout as a timer, so whatever block of code or function is passed to setTimeout it will execute after a fixed time, it basically delays the execution of code, while on the other hand async await isn't bound to any timer, to understand simply, function or promise that uses async await will wait until the function or promise returns an appropriate response...