将Thinking in Java的并发章节大致看了,将一些知识点做些总结归纳。可能有漏误,敬请指正!
使用并发的原因:一个单核处理器,任意刻时间只能处理一个任务。如果多个任务顺序执行,则一个任务阻塞,后面的任务都将不能执行。使用并发处理,多个任务相互切换使用处理器,一个任务阻塞,切换到其他任务执行,不影响其他任务完成。
当使用多核处理器时,使用并发给处理器分配多个任务,多个任务同时进行,实现真正的并发(将一个程序分成几个任务同时分配处理器运行,提高程序运行效率)。
并发解决的问题:速度和设计可管性
Java的并发-多线程编程
java的并发系统会共享内存、I/O等资源,因此编写多线程程序的最基本的困难之处在于协调不同线程驱动的任务之间对这些资源的使用,以使得这些资源不会同时被多个任务访问。
使用多线程机制,这些独立任务中的每一个都将由执行线程来驱动。在使用线程时,CPU将轮流给每个任务分配其占用时间。
1定义任务
通过实现Runnable接口编写run()方法
public class Task implements Runnable{
public void run(){}
}
Task类实例即为一个任务。
2运行任务
2.1通过Thread线程
将任务实例作为线程构造器的参数,将任务附着在线程上,启动线程,会执行任务的run()方法
Thread thread=new Thread(new Task());//附着
thread.start();//启动
2.2通过Executor执行器
通常使用ExexutorService(具有服务生命周期的Executor),使用方法如下:
Executor exec =Executors.newCashedThreadPool();
exec.execute(new Task());