usually query leave to the sql server enegine to manage how a query will be executed and this bring to focus on the parallelism settings of the instances (or databases in the newer versions of sql server).
It's a matter of concurrency. Here you can find the sql server ingine parameters that govern the parallelism in query execution:
MAXDOP instance parameter determines the max number of cpu that a single query can use to run.
There is another parameter that govern the threshold for using a parallel plan or not.
If sql server expects a durationcost higher than this parameter (in second) then it will use a parallel plan (i.e. more than one logical cpu)
with this query you can count the number of parallel plans in cache against single thread plans:
SELECT
SUM(
case when p.query_plan.value('declare namespace p="http://schemas.microsoft.com/sqlserver/2004/07/showplan";
max(//p:RelOp/@Parallel)', 'float') > 0 then 1 else 0 end
) as #num_parallel_plans,
SUM(
case when p.query_plan.value('declare namespace p="http://schemas.microsoft.com/sqlserver/2004/07/showplan";
max(//p:RelOp/@Parallel)', 'float') = 0 then 1 else 0 end
) as #num_nonparallel_plans
FROM
sys.dm_exec_cached_plans cp
CROSS apply sys.dm_exec_query_plan(cp.plan_handle) p
WHERE
cp.cacheobjtype = 'Compiled Plan'
OPTION (MAXDOP 1)