1. A method, in a data processing system, for scheduling application tasks, the method comprising: receiving, by a scheduler in the data processing system, a task that identifies a desired frequency and a desired maximum number of competing hardware threads; determining, by the scheduler, whether a user preference designates either maximization of performance or minimization of energy consumption; responsive to the user preference designating the performance, determining, by the scheduler, whether there is an idle processor core in a plurality of processor cores available; responsive to no idle processor being available, identifying, by the scheduler, a subset of processor cores having a smallest load coefficient; from the subset of processor cores, determining, by the scheduler, whether there is at least one processor core that matches desired parameters of the task; and responsive to at least one processor core matching the desired parameters of the task, assigning, by the scheduler, the task to one of the at least one processor core that matches the desired parameters.