It is possible to change the priority of jobs in the queue, if they are not currently running. The commands are promote and demote. See documentation here:
http://www.mathworks.com/help/toolbox/distcomp/promote.html http://www.mathworks.com/help/toolbox/distcomp/demote.html
There is a pause command. But, that will pause all jobs that are currently not running. I don't think that is what you are looking for in your question.
If a job is running, it is difficult to pause it mid-run and get the worker back for the another run while still being able to restart the paused job where it left off at another time - since MATLAB has no inherent check-pointing.
Another 3rd party scheduler (aka Oracle Grid Engine, LST, PBS) would allow to maintain a queue with a priority system - allowing shorter jobs to run first and so forth. But, it will not solve the issue with MATLAB not having built-in check-pointing.
If you put check-pointing in your code (i.e. allow it to be stop midway and restarted near the stop point), then you can use cancel to stop the job. It will free up the worker, and leave the job in th queue in the finished state. The ErrorMessage will state for the tasks: 'Task cancelled by user'.
Here is a link to the documentation on cancel: http://www.mathworks.com/help/toolbox/distcomp/cancel.html
I hope this helps.