java——线程
线程与进程
1.线程:程序中单独顺序的控制流
线程本身是通过程序进行运行
线程是程序中的顺序控制流,只能使用分配给程序的资源与环境
2.进程:执行中的程序
一个进程可以包含一个或多个线程
一个进程至少要包含一个线程
3.单线程:程序中只存在一个线程,实际上主方法就是一个线程
4.多线程:多线程是一个程序中执行多个任务
多线程目的是更好地使用CPU资源
线程的实现
1.继承Thread类
2.实现Runnable接口
Thread类在java。lang包中定义,继承Thread必须重写run()
Runnable接口最后还是要调用Thread执行
线程的状态
创建状态:准备好了一个多线程对象
就绪状态:调用start(),等待CPU进行调度
运行状态:执行run()
阻塞状态:暂停执行,可能将资源交给其他线程使用
终止状态(死亡状态):线程销毁
常用方法:
取得线程名称:getName()
取得当前线程对象:currentThread() ----->currentThread().getName 获取当前线程名称
判断线程是否启动:isAlive()
线程强制运行:join()
线程休眠:sleep()
线程礼让:yield() 执行到指定条件(比如说大于10),暂停当前线程,让其他线程执行
中断线程:interrupt()
线程暂停:wait()
唤醒线程:notify() notifyAll()
线程优先级:
xxxxxx.setPriority(你想要设置的优先级)
优先级范围是1~10,越大越优先(更可能最先执行,不是一定最先执行),默认为5
MAX_PRIORITY 10
MIN_PRIORITY 1
NORM_PRIORITY 5
生命周期:
线程池:
为什么要用线程池???
假设服务器完成一项任务所需时间为: 创建线程--T1
执行任务--T2
销毁线程--T3
if(T1+T3)远大于T2,建议使用线程池
线程池包括以下组成部分:
1.线程池管理器:用于创建并管理线程(创建、销毁、添加新任务)
2.工作线程:线程池中的线程,在没有任务时处于等待状态,可以循环地执行任务
3.任务接口:每个人物必须实现的接口,以供工作现场调度执行任务,
主要规定了任务的入口,任务执行后的收尾工作,任务的执行状态等...
4.任务队列:用于存放没有处理的任务,提供一种缓冲机制
java——线程的更多相关文章
- Java线程并发:知识点
Java线程并发:知识点 发布:一个对象是使它能够被当前范围之外的代码所引用: 常见形式:将对象的的引用存储到公共静态域:非私有方法中返回引用:发布内部类实例,包含引用. 逃逸:在对象尚未准备 ...
- Java线程的概念
1. 计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行:当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了. 缓 ...
- Java 线程池框架核心代码分析--转
原文地址:http://www.codeceo.com/article/java-thread-pool-kernal.html 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和 ...
- 细说进程五种状态的生老病死——双胞胎兄弟Java线程
java线程的五种状态其实要真正高清,只需要明白计算机操作系统中进程的知识,原理都是相同的. 系统根据PCB结构中的状态值控制进程. 单CPU系统中,任一时刻处于执行状态的进程只有一个. 进程的五种状 ...
- 【转载】 Java线程面试题 Top 50
Java线程面试题 Top 50 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员 的欢迎.大多数待遇丰厚的J ...
- 第24章 java线程(3)-线程的生命周期
java线程(3)-线程的生命周期 1.两种生命周期流转图 ** 生命周期:**一个事物冲从出生的那一刻开始到最终死亡中间的过程 在事物的漫长的生命周期过程中,总会经历不同的状态(婴儿状态/青少年状态 ...
- 第23章 java线程通信——生产者/消费者模型案例
第23章 java线程通信--生产者/消费者模型案例 1.案例: package com.rocco; /** * 生产者消费者问题,涉及到几个类 * 第一,这个问题本身就是一个类,即主类 * 第二, ...
- 第22章 java线程(2)-线程同步
java线程(2)-线程同步 本节主要是在前面吃苹果的基础上发现问题,然后提出三种解决方式 1.线程不安全问题 什么叫线程不安全呢 即当多线程并发访问同一个资源对象的时候,可能出现不安全的问题 对于前 ...
- 第21章 java线程(1)-线程初步
java线程(1)-线程初步 1.并行和并发 并行和并发是即相似又有区别: 并行:指两个或者多个事件在同一时刻点发生. 并发:指两个或多个事件在同一时间段内发生 在操作系统中,并发性是指在一段事件内宏 ...
- [转]Java线程安全总结
最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣.已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profi ...
随机推荐
- Android-Java-构造方法内存图
描述Dog对象: package android.java.oop07; // 描述Dog对象/实体 public class Dog { private String name; private i ...
- ReactNative学习笔记(五)踩坑总结
已经发现的bug或者问题 Android不支持shadow属性: Animated.Image的borderRadius不生效: setNativeProps无法修改图片的source: 没有直接设置 ...
- 拷问传统企业CIO:微服务化值得吗?
所谓数字化转型升级,就是以数字技术优化传统资源,企业需要谨慎地选择合适的技术逐步完成自己的数字化战略.以推出轻舟微服务平台的网易云为代表,云计算公司正在微服务领域发力,促进企业数字化创新.那么,微服务 ...
- 2018/7/26号碰到了个奇怪的问题(http有问题,但是ftp没毛病)
过程大概是这样的 本来测试服务器中发ajax没问题,突然暴毙了,服务器又通过ajax发了另外一个请求(与之前不一样). nginx reload 没毛病 ,ftp 也使用正常. 出了什么问题呢? ...
- Flask 中的路由系统
基本用法 Django的路由系统url集中在一起,而Flask的路由系统以装饰器的形式装饰在视图上如: @app.route("/",methods=["GET" ...
- npm全局目录修改
转载:http://www.qdfuns.com/notes/30749/0f66fcf5e62eed010f744d0d4adaa870.html 我之前安装npm时全是默认安装,模块全部安装在C盘 ...
- SSD报告 - QRadar远程命令执行
SSD报告 - QRadar远程命令执行 漏洞摘要 QRadar中的多个漏洞允许远程未经身份验证的攻击者使产品执行任意命令.每个漏洞本身并不像链接那么强大 - 这允许用户从未经身份验证的访问更改为经过 ...
- nginx代理tomcat做负载
先对三台服务器统一环境. 对两台tomcat服务器的操作 查看jdk环境 # java -version openjdk version "1.8.0_65" OpenJDK Ru ...
- 被高通收购的CSR是一家怎样的公司
CSR plc(LSE:CSR),原名剑桥硅晶无线电或英商剑桥无线电(英语:Cambridge Silicon Radio),是一间创立于 1998年的跨国无厂半导体公司,总部位于英国剑桥.早期技术主 ...
- Angular使用总结 --- 如何正确的操作DOM
无奈接手了一个旧项目,上一个老哥在Angular项目中大量使用了JQuery来操作DOM,真的是太不讲究了.那么如何优雅的使用Angular的方式来操作DOM呢? 获取元素 1.ElementRef ...