当前位置: 首页 > 后端技术 > Java

进程&线程&多线程&串行流&并行流

时间:2023-04-01 14:07:37 Java

进程正在执行的独立程序线程进程最基本的执行单元如果把进程比作社会上独立运行的实体,比如学校、医院、工厂,那么线程可以理解为一个人在实体中执行自己的事务,比如老师、学生、医生、工人同时在同一个进程(也就是应用程序)中执行多个线程,这样就增加了CPU的占用率。需要注意一个CPU。在同一时间点,只能有一个线程在运行。执行多线程不能提高效率,反而会降低效率,反而会增加CPU的使用率(线程来回切换,CPU一直工作,没有休息时间)。如果一个进程有多个执行路径,则称为多线程程序。计算机启动时至少启动两个线程。主线程和垃圾回收线程可以理解为进程的子任务。Serialflow¶llelflow在日常开发中,经常需要使用并行处理的场景来缩短执行时间(对于计算机来说其实程序的整体性能并没有提升,线程之间的切换也是有代价的,但是对于时间perception,执行时间会缩短,提高了人的感知效率),JDK8的并行流是一种简单有效的多线程处理方式,示例如下//serialstreampublicstaticvoidmain(String[]args){Listlist=Arrays.asList(1,2,3,4,5,6,7,8,9,10);list.stream().forEach(i->{System.out.println(Thread.currentThread().getId()+"process:"+i);});}//输出结果1process:11process:21process:31process:41process:51process:61process:71process:81process:91process:10//并行流publicstaticvoidmain(String[]args){Listlist=Arrays.asList(1、2、3、4、5、6、7、8、9、10);list.parallelStream().forEach(i->{System.out.println(Thread.currentThread().getId()+"进程:"+i);});}//输出结果20进程:1015进程:917进程:220进程:118进程:515进程:419进程:816进程:61进程:714进程:3