A method for executing instructions in a multi-threaded processor for at least a first and second thread (8, 9), wherein the first and second thread (8, 9) share resources, comprising: determining whether a plurality of conditions are present in said processor; characterized by: determining, based on satisfaction of said plurality of conditions, whether there is an indication of approaching instruction side starvation for a first thread of at least two threads due to domination of a portion of the shared resources by the second thread; setting a threshold counter to perform a counting operation in response to an indication of approaching instruction side starvation for said first thread; and assigning priority to the first thread and resolving instruction starvation after said threshold counter completes its counting operation by reaching a predetermined value (for example, by timing out or by counting down to zero), wherein the priority is used to determine which thread (8, 9) gets to use a shared resource of the processor when both threads (8, 9) need to use the same resource simultaneously, wherein said resolving instruction starvation comprises moving instructions from the second thread from an execution pipeline of said processor to a temporary storage area for later execution. determining whether a plurality of conditions are present in said processor; characterized by: determining, based on satisfaction of said plurality of conditions, whether there is an indication of approaching instruction side starvation for a first thread of at least two threads due to domination of a portion of the shared resources by the second thread; setting a threshold counter to perform a counting operation in response to an indication of approaching instruction side starvation for said first thread; and assigning priority to the first thread and resolving instruction starvation after said threshold counter completes its counting operation by reaching a predetermined value (for example, by timing out or by counting down to zero), wherein the priority is used to determine which thread (8, 9) gets to use a shared resource of the processor when both threads (8, 9) need to use the same resource simultaneously, wherein said resolving instruction starvation comprises moving instructions from the second thread from an execution pipeline of said processor to a temporary storage area for later execution. determining, based on satisfaction of said plurality of conditions, whether there is an indication of approaching instruction side starvation for a first thread of at least two threads due to domination of a portion of the shared resources by the second thread; setting a threshold counter to perform a counting operation in response to an indication of approaching instruction side starvation for said first thread; and assigning priority to the first thread and resolving instruction starvation after said threshold counter completes its counting operation by reaching a predetermined value (for example, by timing out or by counting down to zero), wherein the priority is used to determine which thread (8, 9) gets to use a shared resource of the processor when both threads (8, 9) need to use the same resource simultaneously, wherein said resolving instruction starvation comprises moving instructions from the second thread from an execution pipeline of said processor to a temporary storage area for later execution.