一、进程

二、线程

1.定义及特点

1)【定义】线程是一个进程内部的一条执行路径,Java虚拟机允许应用程序并发地运行多个执行路径

是系统独立调度和分派【CPU】的基本单位

2)特点

进程中执行运算的最小单位
处理机分配给线程,即真正在处理机上运行的是线程

2.主线程和子线程

3.子线程对象调用run() 和调用start()的区别

1 run() 相当于方法调用 ,不会创建新的栈空间,不会有新的子线程
2 start() 开辟新的栈空间,会产生新的子线程 , 再帮助调用run方法执行

4.多线程

多线程就是在一个进程中创建多个线程,每个线程完成一个任务

优点

    多线程技术使程序的响应速度更快
提高资源利用率
程序设计更简单

特点

    随机性(异步执行):谁抢到cpu,谁执行
宏观上同时执行,微观上同一时刻只能执行一个线程(多核除外)

5.进程和线程区别

1)进程有独立的地址空间,一个进程崩溃后,不会对其它进程产生影响,而线程只是一个进程中的不同执行路径

2)线程有自己的栈和局部变量,多个线程共享同一进程的地址空间

3)一个进程至少有一个线程

6.Java中创建线程

两种创建方法:

1)第一种:继承Thread类
2)第二种:实现Runnable接口

创建步骤

    1.定义线程
2.创建线程对象
3.启动线程
4.终止线程

两种创建方法比较

1继承Thread
适合每个线程是独立执行,没有资源共享 2实现Runnable
适合存在资源共享情况,要和Thread类结合使用 资源共享分两种情况
a.相同操作,同一个资源:操作代码和资源同一个类中,并实现Runnable接口 b.不同操作,同一个资源:资源单独一个类,操作分别在不同类中,并实现Runnable接口

7.线程五种状态

新生状态、可运行状态、运行状态、阻塞状态和死亡状态

8.线程调度

1)线程调度的方法

join()方法

阻塞指定的线程等到另一个线程完成以后再继续执行
public final void join();
public final void join(long mills);
public final void join(long mills,int nanos);
实现的效果:调用join()_方法的线程对象会插队到当前线程的前面(即先执行)

sleep()方法

当前线程在指定毫秒内停止执行而转入不可运行状态
public static void sleep(long millis);

yield()方法

当前线程转入暂时停止运行的状态
public static void yield();

2)sleep()与yield()的区别

9.线程终止

1.标志位,可以使run()方法正常执行完
2.stop()方法强行终止线程【不推荐】
3.interrupt()方法通过抛异常的方式 打断线程的执行

10.其他

【获取当前线程名字】Thread.currentThread().getName() (通用)
子类线程中可直接使用getName()获取当前线程名称
【线程命名】调用Thread类中的setName 改变线程的名字

Java之进程与线程的更多相关文章

  1. Java多线程——进程和线程

    Java多线程——进程和线程 摘要:本文主要解释在Java这门编程语言中,什么是进程,什么是线程,以及二者之间的关系. 部分内容来自以下博客: https://www.cnblogs.com/dolp ...

  2. 关于Java中进程和线程的详解

    一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...

  3. java中进程与线程的三种实现方式

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指 ...

  4. java中进程与线程--三种实现方式

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指 ...

  5. 【JAVA并发第一篇】Java的进程与线程

    1.进程与线程 1.1.进程 进程可以看作是程序的执行过程.一个程序的运行需要CPU时间.内存空间.文件以及I/O等资源.操作系统就是以进程为单位来分配这些资源的,所以说进程是分配资源的基本单位. ( ...

  6. java中进程与线程的区别

    进程是一个正在运行的应用程序.一个进程包含一个或多个线程.它可以是一段完整的代码或部分程序的动态执行.系统资源分配与调度的基本单位.而线程是CPU调度与运行的基本单位,它是一组指令的集合或是程序的特殊 ...

  7. java之进程和线程

    1.进程和线程的通俗例子. 2.进程和线程关系.

  8. Java并发--进程与线程由来

    下面是本文的目录大纲: 一.操作系统中为什么会出现进程? 二.为什么会出现线程? 三.多线程并发 一.操作系统中为什么会出现进程? 说起进程的由来,我们需要从操作系统的发展历史谈起. 也许在今天,我们 ...

  9. java 中 进程和线程的区别

    目录 什么是进程?什么是线程? 为什么要有线程? 进程与线程的区别? 进程与线程的选择取决条件? 什么是进程?什么是线程?进程:进程是并发执行程序在执行过程中资源分配和管理的基本单位(资源分配的最小单 ...

随机推荐

  1. SpringMVC文件上传下载

    不多说,代码: Spring-config.xml<!-- spring可以自动去扫描base-pack下面的包或者子包下面的java文件, 如果扫描到有Spring的相关注解的类,则把这些类注 ...

  2. Vuex(二)——关于store

    一.总览 Vuex 应用的核心就是 store(仓库). "store" 包含着应用中大部分的状态(state). 二.Vuex 和单纯全局对象的不同 Vuex 的状态存储是响应式 ...

  3. STM32实战应用(一)——1602蓝牙时钟1液晶的显示测试

    前言 从51到STM32F4学习这么久了,总算找到点头绪了,目前学习了GPIO,中断,定时器,看门狗的基本使用,所以想试着看看能不能做个什么东西,就是想复习一下最近学习的知识.正好上学期单片机课程设计 ...

  4. 从JDBC到hibernate再到mybatis之路

    一.传统的JDBC编程 在java开发中,以前都是通过JDBC(Java Data Base Connectivity)与数据库打交道的,至少在ORM(Object Relational Mappin ...

  5. python——进程、线程、协程

    Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...

  6. Python全栈之路-Day31

    1 反射 反射的精髓是通过字符串去获取对象属性的值 1.1 基于类和对象反射的属性 #!/usr/bin/env python # __Author__: "wanyongzhen" ...

  7. 初学T4模板

    1.T4模板语法 <#@ template language="C#v3.5" hostSpecific="true" debug="true& ...

  8. linux中移动光标

    ctrl + e 光标 移动到 行尾 ctrl + a 光标 移动到 行首

  9. Laravel 5.2 教程 - 迁移

    一.简介 迁移(Migrations)是一种数据库的版本控制.可以让团队在修改数据库结构的同时,保持彼此的进度一致.迁移通常会和 结构生成器 一起使用,可以简单的管理数据库结构. 下面以创建学生表的迁 ...

  10. Kafka配置及简单命令使用

    一. Kafka中的相关概念的介绍 Kafka是一个scala实现的分布式消息中间件,其中涉及到的相关概念如下: Kafka中传递的内容称为message(消息),message 是通过topic(话 ...