In-place merge two sorted array
Your code is correct, but the problem you proposed can be solved in a less complicate manner, starting from your example these are some steps of my algorithm making comparisons between elements of the two arrays:
x = [1, 4, 7, 8, 10} , y = [2, 3, 9] step0 : comparing 10, 9
                  ^               ^

x = [1, 4, 7, 8, 9} , y = [2, 3, 10] step1 : 10, 9 swapped
                 ^                ^

x = [1, 4, 7, 8, 9} , y = [2, 3, 10] step2 : comparing 9, 3
                 ^            ^
       
x = [1, 4, 7, 8, 3} , y = [2, 9, 10] step3 : 3, 9 swapped 
                 ^            ^

x = [1, 3, 4, 7, 8} , y = [2, 9, 10] step5 : reordered x with swaps, comparing 8, 9
                 ^            ^

This means that if you start from the right of the two arrays, if the x array element is greater than the array y element, the swap will be done and after you will reorder the x array swapping adiacent elements if one element is smaller than previous element in the array.
With the help of a method to swap elements between the two arrays like this below:
private static void swap(int i, int j, int[] arr1, int[] arr2) {
    int tmp = arr1[i];
    arr1[i] = arr2[j];
    arr2[j] = tmp;
}

Your method  mergeRunner can be rewritten like below:
private static void mergeRunner(int[] x, int[] y) {
    final int maxIndex = x.length - 1;

    for (int j = y.length - 1; j &gt;= 0; --j) {

        if (y[j] &lt; x[maxIndex]) {

            swap(maxIndex, j, x, y);

            for (int i = maxIndex; i &gt; 0 &amp;&amp; x[i - 1] &gt; x[i]; --i) {

                swap(i, i - 1, x, x);
            }
        }
    }
}