多线程的并发和并行,java多线程并发解决方案详解
00-1010一、并发与并行二。线程和进程。创建线程类前言:
在没有跳转语句的前提下,程序都是自上而下执行的。现在,我想设计一个边玩游戏边听歌的程序。我该怎么设计?为了解决上述问题,我们不得不使用多进程或多线程。
00-1010并发:指同一个时间段内.的两个或更多事件并行:指同一时刻.的两个或更多事件(同时)发生
在操作系统中,安装了多个程序,宏观上一段时间内同时运行多个程序,这是很离谱的。在单CPU系统中,每一时刻只能执行一个程序,也就是这些程序在微观上分时交替运行,但它只是给人一种同时运行的感觉,因为分时交替运行的时间很短。另一方面,在多CPU系统中,可以将这些可以并发执行的程序分布到多个CPU上,从而实现多任务并行执行,即每个处理器处理一个可以并发执行的程序,这样就可以同时执行多个程序。目前电脑市场上的多核CPU就是多核处理器。内核越多,并行处理程序越多,可以大大提高计算机运行效率。
注意:单核处理器计算机不能并行处理多个任务,只有多个任务才能在单个CPU上并发运行。同理,螺纹也是一样的。从宏观上看,线程是并行运行的,但从微观上看,它们是串行运行的,即一个线程接着一个线程运行。当系统只有一个CPU时,线程将按照一定的顺序执行多个线程。我们称这种情况为线程调度。
00-1010进程:是指一个应用运行在一个内存中,每个进程都有独立的内存空间,一个应用可以同时运行多个进程;进程也是程序的一个执行过程,是系统运行程序的基本单元;在一个系统中运行一个程序,是一个从创建、运行到消亡的过程。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行。一个进程中至少有一个线程。一个进程中可以有多个线程,这个应用也可以称为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程可以包含多个线程。
我们可以点击电脑底部的任务栏,右键打开任务管理器,查看当前任务的进度:进程.
线程
线程调度:
分时调度:的所有线程轮流使用CPU的使用权,平均分配每个线程的CPU时间。抢占式调度:让优先级高的线程优先使用CPU。如果线程具有相同的优先级,将随机选择一个(线程随机性)。Java使用抢占式调度。设置线程的优先级
抢占式调度详解:
大多数操作系统都支持多进程并发运行,现在几乎所有操作系统都支持同时运行多个程序。比如现在我们上课用的编辑器,录屏软件,画板,dos窗口等软件。此时,这些程序同时在运行,“感觉好像这些软件同时在运行”。实际上,CPU(中央处理器)使用抢占式调度模式在多个线程之间高速切换。对于CPU的一个核心来说,某个时刻只能执行一个线程,CPU在多个线程之间切换的速度比我们感觉的要快,好像是同时在运行。多线程程序其实并不能提高程序的运行速度,但是可以提高程序的运行效率,让CPU利用率更高。
目录
Java使用java.lang.Thread类来表示线程,所有线程对象必须是Thread类或其子类的实例。每个线程的作用是完成某个任务,其实就是执行一段程序流,也就是按顺序执行的一段代码。用Java线程执行器来表示这个程序流程。创建和启动多线程在Java中通过继承Thread类的步骤如下:定义Thread类的子类,重写这个类的run()方法。这个run()方法的方法体代表了线程需要完成的任务,所以run()方法被称为线程执行器。创建thread子类的一个实例,即创建一个thread对象并调用Thread对象的start()方法启动线程代码如下: 测试类:.
brush:java;">public class Demo01 {public static void main(String[] args) {//创建自定义线程对象MyThread mt = new MyThread("新的线程!");//开启新线程mt.start();//在主方法中执行for循环for (int i = 0; i < 10; i++) {System.out.println("main线程!"+i);}}}自定义线程类:
public class MyThread extends Thread {//定义指定线程名称的构造方法public MyThread(String name) {//调用父类的String参数的构造方法,指定线程的名称super(name);}/** * 重写run方法,完成该线程执行的逻辑 */@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println(getName()+":正在执行!"+i);}}}到此这篇关于Java多线程并发与并行和线程与进程案例的文章就介绍到这了,更多相关Java多线程内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。