11.1-全栈java笔记:多线程技术的基本概念

     2022-03-19     519

关键词:

多线程是JAVA语言的重要特性,大量应用于网络编程、应用于服务器端程序的开发、以及最常见的UI界面底层原理、操作系统底层原理都大量使用了多线程。

我们可以流畅的点击软件或者游戏中的各种按钮,其实,底层就是多线程的应用。UI界面的主线程绘制界面,如果有一个耗时的操作发生则启动新的线程,完全不影响主线程的工作。当这个线程工作完毕后,再更新到主界面上。

我们可以上百人、上千人、上万人同时访问某个网站,其实,网站服务器也是基于多线程的原理。如果没有多线程,服务器处理速度会极大降低。

多线程应用于计算机的各个方面,但是对于初学者,我们只需掌握基本的概念即可。在入门阶段,暂时没有必要过深去钻研。

基本概念

程序

程序”(Program)是一个静态的概念,一般对应于操作系统中一个可执行文件,比如:我们要启动酷狗听音乐,则对应酷狗的可执行程序。当我们双击酷狗,则加载程序到内存中,开始执行该程序,于是产生了进程

进程

执行中的程序叫做进程(Process),是一个动态的概念。现代的操作系统都可以同时启动多个进程。比如:我们在用酷狗听音乐、也可以使用eclipse写代码、也可以同时用浏览器查看网页。

进程具有如下特点:

1)进程是程序的一次动态执行过程, 占用特定的地址空间。

2)每个进程由3部分组成:cpudatacode。每个进程都是独立的,保有自己的cpu时间,代码和数据,即便用同一份程序产生好几个进程,它们之间还是拥有自己的这3样东西。  造成的缺点:内存的浪费,cpu的负担较重。

3)多任务(Multitasking)操作系统àCPU时间动态地划分给每个进程,操作系统同时执行多个进程,每个进程独立运行。以进程的观点来看,它会以为自己独占CPU的使用权。

4)进程的查看。

Windows系统: Ctrl+Alt+Del,启动任务管理器即可查看所有进程

Unix系统: ps or top

线程

一个进程可以产生多个线程。 多个进程可以共享操作系统的某些资源一样,同一进程的多个线程也可以共享进程的某些资源(比如:代码、数据),所以线程又被称为轻量级进程(lightweight process)。

1)一个进程可拥有多个并行的(concurrent)线程

2)一个进程中的多个线程共享相同的内存单元/内存地址空间à可以访问相同的变量和对象,而且它们从同一堆中分配对象à通信、数据交换、同步操作

3)由于线程间的通信是在同一地址空间上进行的,所以不需要额外的通信机制,这就使得通信更简便而且信息传递的速度也更快。

4)线程的启动、中断、消亡,消耗的资源非常少。

线程和进程的区别

1)每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。

2)线程可以看成时轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。

3)线程和进程最根本的区别在于:进程作为资源分配的单位,线程是调度和执行的单位

4)多进程: 在操作系统中能同时运行多个任务(程序)

5)多线程: 在同一应用程序中有多个顺序流同时执行

6)线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。

7)一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。

8)系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是 说,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。

进程与程序的区别

程序是一组指令的集合,它是静态的实体,没有执行的含义。而进程是一个动态的实体,有自己的生命周期。一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个程序可以有多个进程,或者一个进程都没有。除此之外,进程还有并发性和交往性。简单地说,进程是程序的一部分,程序运行的时候会产生进程。




「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。


 笔记包含从浅入深的六大部分:

 A-Java入门阶段

 B-数据库从入门到精通

 C-手刃移动前端和Web前端

 D-J2EE从了解到实战

 E-Java高级框架精解

 F-Linux和Hadoop 



本文出自 “12931675” 博客,请务必保留此出处http://12941675.blog.51cto.com/12931675/1944632

11.2-全栈java笔记:java中如何实现多线程

在JAVA中使用多线程非常简单,我们先学习如何创建和使用线程,然后结合案例再深入剖析线程的特性。通过继承Thread类实现多线程继承Thread类实现多线程的步骤:1. 在Java中负责线程的这个功能的是java.lang.Thread 这个类2.&n... 查看详情

11.6-全栈java笔记:什么是线程同步

 同步问题的提出现实生活中,我们会遇到“同一个资源,多个人都想使用”。 比如:教室里,只有一台电脑,多个人都想使用。天然的解决办法就是,在电脑旁边,大家排队。前人使用完后,后人再使用。线程同步的概... 查看详情

12.1-全栈java笔记:网络编程的基本概念

什么是计算机网络?把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。计算机网络的主要功... 查看详情

java多线程-thead线程学习记录笔记(代码片段)

...概念到后面的基本使用。以及一些稍微的原理猜测。个人笔记,不喜勿喷 目录目录一、线程使用1.1概念1.2线程生命周期1.3java中实现的方式 1.3.1 继承线程Thread1.3.2实现接口Runnable(无返回值)1.3.3 实现接口Callableÿ... 查看详情

7.1-全栈java笔记:数组的概念和初始化

数组概述和特点数组的定义:数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个下标来访问它们。数组的三个基本... 查看详情

java多线程——基本概念

...操作系统申请资源(如内存空间和文件句柄)的基本单位。线程(thread):进程中可独立执行的最小单位。一个进程可以包含多个线程,同一个进程中的所有线程共享该进程中的资源。Java平台中的一个线程就是一个对象。任务(task):... 查看详情

10.2-全栈java笔记:最全面的io技术

上节我们聊到「IO技术概念及入门」这节我们继续聊一下IO技术的分类。Java中流的概念细分按流的方向分类:输入流:数据流向是数据源到程序(InputStream、Reader结尾的流)输出流:数据流向是程序到目的地(OutPutStream、Writer结尾的... 查看详情

11.9-全栈java笔记:线程并发协作(生产者/消费者模式)

多线程环境下,我们经常需要多个线程的并发和协作。这个时候,就需要了解一个重要的多线程并发协作模型“生产者消费者模式”。  什么是生产者?生产者指的是负责生产数据的模块(这里模块可能是:方法、对象、... 查看详情

java多线程之基本概念

01. Java多线程系列--“基础篇”01之基本概念Java多线程学习(吐血超详细总结) 查看详情

初学java多线程的基本概念

一:线程与之前所学的进程区别:进程:系统进行资源分配的最小单位,资源是独立的线程:CPU调度的最小的单位,线程间共享资源。多线程几个线程共占据一个进程,单线程独占一个线程。主线程就像是前台接待,当工作量太... 查看详情

13.1-全栈java笔记:打飞机游戏实战项目|awt技术|mygameframe

 简介和项目目标通过游戏项目学习整个Java基础知识体系,我们做了精心的设计,让每一章知识都能获得应用。比如:多线程用来实现动画效果、容器实现对于多发炮弹的存取和处理、常用类等等的应用。寓教于乐,让大家... 查看详情

posix多线程—线程基本概念

http://blog.csdn.net/livelylittlefish/article/details/7957007作者:阿波链接:http://blog.csdn.net/livelylittlefish/article/details/7957007(整半年没有更新,发几篇以前的读书笔记。) content1. 线程建立与使用创建线程初始线程线程分离2. 线 查看详情

11.8-全栈java笔记:死锁及解决方案

 死锁的概念“死锁”指的是:多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。         &nb... 查看详情

13.3-全栈java笔记:打飞机游戏实战项目|paintthread|launchframe

多线程和内部类实现动画效果1)增加绘制窗口的线程类前三个版本,我们步步为营,每个小版本都有功能的突破。但是,目前为止我们的窗口仍然是静态的,并没有像真正的游戏窗口那样“各种动、各种炫”。本节我们结合多... 查看详情

java全栈javase:16.多线程(代码片段)

第九章多线程我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决.9.1... 查看详情

尚硅谷_java零基础教程(多线程)--学习笔记(代码片段)

Java多线程一、基本概念1、程序、进程、线程2、单核CPU和多核CPU、并行与并发3、使用多线程的优点二、线程的创建和使用1、API中创建线程的两种方式1.1、方式一:继承Thread类1.2、方式二:实现Runnable接口1.3、Thread类的调... 查看详情

java面试高频技术线程池,源码笔记答案全纪录(代码片段)

课程的目标及受众公开课受众:有一定的java基础(线程),尤其是正要或正准备找工作的童鞋如果想在众多面试者中脱颖而出,你就需要多准备一些知识点,多刷一些面试题。而对于企业而言,有这么多的选择那我们... 查看详情

java多线程的基本使用(代码片段)

文章目录1.多线程的概念2.线程的实现方式2.1继承Thread类实现多线程2.2实现Runnable接口实现多线程2.3实现Callable的多线程1.多线程的概念在程序执行的时候,即使没有开启多线程,Java后台也有多个线程在运行,最基本的... 查看详情