Java之进程与线程
一、进程
二、线程
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之进程与线程的更多相关文章
- Java多线程——进程和线程
Java多线程——进程和线程 摘要:本文主要解释在Java这门编程语言中,什么是进程,什么是线程,以及二者之间的关系. 部分内容来自以下博客: https://www.cnblogs.com/dolp ...
- 关于Java中进程和线程的详解
一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...
- java中进程与线程的三种实现方式
一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指 ...
- java中进程与线程--三种实现方式
一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指 ...
- 【JAVA并发第一篇】Java的进程与线程
1.进程与线程 1.1.进程 进程可以看作是程序的执行过程.一个程序的运行需要CPU时间.内存空间.文件以及I/O等资源.操作系统就是以进程为单位来分配这些资源的,所以说进程是分配资源的基本单位. ( ...
- java中进程与线程的区别
进程是一个正在运行的应用程序.一个进程包含一个或多个线程.它可以是一段完整的代码或部分程序的动态执行.系统资源分配与调度的基本单位.而线程是CPU调度与运行的基本单位,它是一组指令的集合或是程序的特殊 ...
- java之进程和线程
1.进程和线程的通俗例子. 2.进程和线程关系.
- Java并发--进程与线程由来
下面是本文的目录大纲: 一.操作系统中为什么会出现进程? 二.为什么会出现线程? 三.多线程并发 一.操作系统中为什么会出现进程? 说起进程的由来,我们需要从操作系统的发展历史谈起. 也许在今天,我们 ...
- java 中 进程和线程的区别
目录 什么是进程?什么是线程? 为什么要有线程? 进程与线程的区别? 进程与线程的选择取决条件? 什么是进程?什么是线程?进程:进程是并发执行程序在执行过程中资源分配和管理的基本单位(资源分配的最小单 ...
随机推荐
- SVG如何做圆形图片
SVG如何做圆形图片 2016年5月31日17:30:48 提到圆形图片,大家首先想到的一定是border-radius,但在SVG中这些方法很难起效,下面方法适合SVG中制作任意规则与不规则的图形. ...
- 利用jackson-databind,复杂对象对象和json数据互转
如果简单对象,那么转换的方式比较多,这里指的复杂对象,是指对象里面存在cycle引用,比如: /** * @author ding * */@Entity@Table(name = "ser ...
- 【Android】再来一篇Fragment懒加载(只加载一次哦)
效果 老规矩,先来看看效果图 没错,我又入坑了,又重新做了个 Gank 客户端,因为之前那个代码写得太烂了,这次有好好的考虑了下架构之类的事,代码应该会更容易读懂了点了,吧.哈哈,再次欢迎来 star ...
- 业务订单号生成算法,每秒50W左右,不同机器保证不重复,包含日期可读性好
参考snowflace算法,基本思路: 序列12位(更格式化的输出后,性能损耗导致每毫秒生成不了这么多,所以可以考虑减少这里的位,不过留着也并无影响) 机器位10位 毫秒为左移 22位 上述几个做或运 ...
- java spring mvc 全注解
本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工 ...
- 从网络通信角度谈web性能优化
衡量一个网站的性能有多个指标,DNS解析时间,TCP链接时间,HTTP重定向时间,等待服务器响应时间等等,从用户角度来看,就可以归结为该网站访问速度的快慢.也就是说性能等于网站的访问速度. 早些年Am ...
- Android Gradle manifestPlaceholders 占位符详解
Android Gradle manifestPlaceholders 占位符详解 在实际项目中,AndroidManifest里十几个地方的值是需要动态的改变(生成apk文件的时候).如果每次去改也 ...
- 基于JS的问卷调查
主要工作 因为代码不好展示,也不好截长图,可以去看我的GitHub地址:https://github.com/14glwu/MyBlog/blob/master/questionnaire.html ...
- 蓝桥杯-李白打酒-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- scp 命令快速使用讲解
在 Linux 下使用 scp 命令 scp 是安全拷贝协议(Secure Copy Protocol)的缩写,和众多 Linux/Unix 使用者所熟知的拷贝(cp)命令一样.scp 的使用方式类似 ...