CoreJava笔记之线程
程序,进程和线程
程序:没有执行的指令序列和相关的数据的集合(如:qq.exe)
如:磁盘上的可执行命令
进程:正在执行的程序,进程占用资源(CPU,Memoary,IO)
线程:是进程中并发执行的过程(共享进程资源)
同步:步调一致的顺序执行,如:上公交车,一个一个的上
异步:步调不一致的同时执行,如:大家一起上卡车
线程:名称->类
Thread 类中包含一个方法 run() 这个方法就是独立运行的过程
Thread 类中还包含方法 start() 用来启动独立运行的run()
创建一并启动个线程:
1、要覆盖Thread类中的run() 方法,提供独立运行的过程
2、调用Thread实例的start() 方法启动 run()过程
线程的状态:
start()
[新建 new] -------------> [可运行(Runnable)] <------>[运行态(Running)]
软件执行时至少执行一遍
========================
线程:
线程状态:
1、new(新建)
2、Runnable
3、Running
4、Block
5、Dided
线程状态管理:
Thread.yield()当前线程让出处理器(离开Running),使当前线程进入Runnable等待
Thread.sleep(times)使当前线程从Running放弃处理器进入Block状态,休眠times毫秒,再返回到Runnable
如果其他线程打断当前线程的Block(sleep),就会发生InterruptedException
后台线程(守护线程,精灵线程)
t1.setDaemon(true);
Java进程的结束:当所有前台线程都结束时,Java进程结束
后台线程,不管是否结束,都被停掉!
线程的优先级
默认有10 优先级,优先级高的线程获得执行的机会多。机会的多少不能通过代码干预。
默认的优先级为 5.
======================================
两种方式创建线程:
1、继承Thread类
a.继承Thread类,覆盖run()方法,提供并发运行的过程
b.创建这个类的实例
c.使用start()方法启动线程
2、实现Runnable接口
a.实现Runnable接口,实现run()方法,提供并发运行的过程
b.创建这个类的实例,用这个实例作为Thread构造器参数创建Thread类。
c.使用start()方法启动线程
class Foo implements Runnable{
public void run(){
//...
}
}
Thread t = new Thread(new Foo());
t.start();
*****************************************
集中线程的写法:
1.
new Thread(){
public void run(){
for (int i = 0; i < 5; i++) {
System.out.println("HelloWorld!");
}
}
}.start();
2.
new Thread(new Runnable(){
public void run(){
System.out.println("second");
}
}).start();
CoreJava笔记之线程的更多相关文章
- 操作系统学习笔记----进程/线程模型----Coursera课程笔记
操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...
- python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon)
python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon) 前言 今天小编YOYO请xiaoming和xiaowang吃火锅,吃完火锅的时候会有以下三种场景: - ...
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
- 笔记-python-多线程-深入-1
笔记-python-多线程-深入-1 1. 线程池 1.1. 线程池:控制同时存在的线程数量 threading没有线程池,只能自己控制线程数量. 基本有两种方式: 每间隔一段时间创建 ...
- JUC源码学习笔记5——线程池,FutureTask,Executor框架源码解析
JUC源码学习笔记5--线程池,FutureTask,Executor框架源码解析 源码基于JDK8 参考了美团技术博客 https://tech.meituan.com/2020/04/02/jav ...
- 0040 Java学习笔记-多线程-线程run()方法中的异常
run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为 ...
- 0039 Java学习笔记-多线程-线程控制、线程组
join线程 假如A线程要B线程去完成一项任务,在B线程完成返回之前,不进行下一步执行,那么就可以调用B线程的join()方法 join()方法的重载: join():等待不限时间 join(long ...
- zeromq源码分析笔记之线程间收发命令(2)
在zeromq源码分析笔记之架构说到了zmq的整体架构,可以看到线程间通信包括两类,一类是用于收发命令,告知对象该调用什么方法去做什么事情,命令的结构由command_t结构体确定:另一类是socke ...
- [Android学习笔记]子线程更新UI线程方法之Handler
关于此笔记 不讨论: 1.不讨论Handler实现细节 2.不讨论android线程派发细节 讨论: 子线程如何简单的使用Handler更新UI 问题: android开发时,如何在子线程更新UI? ...
随机推荐
- C#中遇到的方法总结
1.Select(string filterExpression, string sort) // 获取按照指定的排序顺序且与筛选条件相匹配的所有 System.Data.DataRow 对象的数组 ...
- Centos7 因内存 可用大小不足,被killed的解决办法
Linux的内存分配采取的是一种更加积极的分配策略,它假设应用申请了内存空间后并不会立即去使用它,所以允许一定量的超售,当应用真的需要使用它的时候,操作系统可能已经通过回收了其他应用的内存空间而变得有 ...
- centos 7 安装mysql5.6rpm格式
1查看是否安装了mysql rpm -qa|grep -i mysql 如果安装了请卸载:rpm -e --nodeps MySQL... 2.没有安装则进行如下操作 下载mysql rpm ta ...
- geth attach
1. geth attachgeth attach ipc:\\.\pipe\geth.ipc2. "Error: insufficient funds for gas * price + ...
- react-dnd使用介绍
核心API 想要灵活使用,就先知道几个核心API DragSource 用于包装你需要拖动的组件,使组件能够被拖拽(make it draggable) DropTarget 用于包装接收拖拽元素的组 ...
- 五、Centos linux系统优化-实战
一.linux用户名和密码远程登陆的修改: windows默认的远程端口和管理员:user:administrator prot:3389在管理--->本地用户和组 进行权限设置或者修 ...
- top 常用命令
参考文档: http://www.cnblogs.com/allen8807/archive/2010/11/10/1874001.html [root@linux ~]# top [-d] | to ...
- 10分钟教你用Python玩转微信之抓取好友个性签名制作词云
01 前言+展示 各位小伙伴我又来啦.今天带大家玩点好玩的东西,用Python抓取我们的微信好友个性签名,然后制作词云.怎样,有趣吧~好了,下面开始干活.我知道你们还是想先看看效果的. 后台登录: 词 ...
- WPF捕获全局未处理异常
在WPF开发过程中我们一般都用try/catch块来捕获异常,但不是每个异常我们都能捕获,程序总会出现一些意想不到情况,抛出一些未捕获的异常,这时就要用到全局异常捕获,即在程序的最外层加上捕获未处理异 ...
- struts2的优缺点
Struts2框架10个优点:1.可以用任何POJO(存粹的java类)来接收表单输入.可以把POJO视为一个Action类 Action类:获得Form表单数据,并处理逻辑的类: DAO类:进行数据 ...