pthread函数库的安装所以在此我们必须先安装好pthread库。安装好pthread库之后,我们就可以编写自己的多线程小程序啦。在代码中我用到了两个在多线程程序中经常用到的两个函数:创建线程函数pthread_create()和阻塞线程函数pthread_join()。
pthread函数库的安装所以在此我们必须先安装好pthread库。安装好pthread库之后,我们就可以编写自己的多线程小程序啦。在代码中我用到了两个在多线程程序中经常用到的两个函数:创建线程函数pthread_create()和阻塞线程函数pthread_join()。
线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。Java使用的线程调度是抢占式调度,在抢占式调度下,优先级最高的任务一直执行,直到它进入等待或死亡状态或更高优先级的任务出现,优先级高的线程比优先级低的线程优先执行。线程之间的通信与协作上面比较清楚的显示了线程的状态流转,其实重点主要是掌握运行、阻塞、就绪之间的通信机制。
程序一般不会直接使用内核线程,而是去使用内核线程的一种高级接口—轻量级进程(LWP),轻量级进程就是我们所讲的线程,这种轻量级进程与内核线程之间1:1的对应关系。操作系统提供支持的轻量进程作为用户线程和内核线程之间的桥梁,用户线程的系统调用要通过轻量级线程来完成,大大降低了进程阻塞的风险。java定义了5中线程状态,任意一个时间点,一个线程有且只有其中一个状态。
生产者、消费者是wait、notify最典型的应用场景,这些函数的调用,是必须要放在synchronized代码块里才能够正常运行的。concurrent包最常用的就是线程池,平常工作建议直接使用线程池,Thread类就可以降低优先级了。对于提交的任务,如果有空闲线程,则使用空闲线程来处理;否则新建一个线程来处理任务”。在线程池的构造参数中,我们使用的队列,一定要注意其特性和边界。