Execute the kernel twice in succession. Will the thread blocks and thread IDs within the kernel change?

I executed the kernel once, and for a certain thread, the blockId.x was 5 and the threadId.x was 6. When I execute this kernel a second time, will the blockId.x and threadId.x for this thread still be 5 and 6?
How can I operate on the same thread in both kernel executions?

You as the programmer control the mapping of threads to data elements. The code does not randomly change between kernel calls.

The only identification of a thread is its block id and thread id and its state (registers, local memory, instruction pointer for execution, relationship to other threads, shared memory contents).

The thread state is erased between executions.

It is a philosophical question, whether it is the same thread (you called it this thread), probably it is the respective thread, when invoking the kernel again for the thread with the same ids.

If you (sucessfully) call the kernel with the same grid and block size, you will get threads with the same ids.

If you want to store state between kernel invocations, you typically would use global memory. You would use indices, which depend on the block and thread ids.