使用java开发多线程机制
近期发多线程机制在JAVA中被开发出来。一般我们开发的程序只有一个main线程,也就是MAIN函数启动。但是在一些不同的场合中,比如从服务器接收命令的过程中,就会需要同时处理多个客户端发送的命令,所以需要为每个客户端建立一个线程。这样就成功建立了一个多线程程序,多线程可以在同一时间段内执行多条的指令,可以让多个逻辑进程并发运行。
在JAVA中定义一个thread是有两种方式的:Runnable接口和Thread类,两者都是由Thread类的start方法启动的,但是真正的执行命令是在run方法中。还有就是线程有几种状态:执行、终止、休眠、挂起等。在某些条件下,每个状态是都可以相互转换的。
还有两个重要的模型:Producer-consumer模型,就是一个线程产生的任务,由另一个线程执行任务。两个线程之间有一个共享数据区域,可以用队列来表示,但必须是并发的、同步的,同一时间只有一个线程可以访问共享数据队列。这种机制称为同步访问。
线程池模型,这个也就是讲,伴随线程开始创建N个工作线程并启动它们,它们的初始状态都是空闲的。然后观察线程从工作队列中取出一个工作任务,同时从线程池中取出一个空闲线程执行工作任务。执行完任务后,将工作线程从运行状态改为空闲状态,使连续从工作队列中取出的任务由线程池中的空闲线程执行。
线程池模型不需要为每个任务创建一个线程,只需要初始创建N个线程,然后一直使用这N个线程执行工作队列中的任务,大大降低了线程启动和结束的开销。
总而言之,多线程编程的关键是线程类的设计和共享数据的设计。同时还要注意区分哪些线程是多线程可以访问的,哪些线程是私有的,以及线程的状态变化。