In IT, a heavyweight thread is a thread that has a sophisticated context and requires the processor to do more work to order its execution. The general definition of a thread in IT is a single process that is isolated in code, where some programs can have multiple threads, for example, to accommodate multiple users, or to separate definitions of multiple tasks.
Processors handle multiple threads in order to prioritize executions. A single thread will be a part of a program execution that a processor can handle individually. With that in mind, some experts classify threads as either lightweight or heavyweight depending on their context. A lightweight thread would be a thread that does not require a lot of "changes" to the system in order to implement its execution. By contrast, a heavyweight thread execution may require switching to a different set of contextual resources, or dealing with differently allocated memory space, that can require more time for switching. One example of a heavyweight thread is the average UNIX process, where processors may need to access more resources, and switch time may be greater, than with some other kinds of threads in different operating system environments. Threads or processes with their own virtual memory may be considered heavyweight threads, as well as those which may involve certain restrictions on access. It’s important to note that the terms 'lightweight thread’ and 'heavyweight thread’ are subjective, and that generally, programmers and others define them on a case by case basis.