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? ...
随机推荐
- js调试工具Console命令详解——转
一.显示信息的命令 <!DOCTYPE html> <html> <head> <title>常用console命令</title> < ...
- JW Player开始播放和结束播放事件的捕获
项目中使用到jwPlayer,需要在用户开始播放盒结束播放的时候触发一些事件,所以研究JWPlayer. <script type="text/javascript"> ...
- vc和halcon数据的相互赋值
// HTuple→VC 数据类型转换 HTuple hTuple = 1234; int i = hTuple[0].I(); // i=1234 long l = hTuple[0].L(); / ...
- 如何让X5发现你的手机
1. 手机开启 USB 调试.不用 ROOT.2. 装驱动.(问题就在这里) 首先要装对驱动,如果你的驱动叫 MyHTC,请立即删除. 找个 手机助手.例如 百度 腾讯 360 等等.反正不论你是谁的 ...
- redis内网无法连接的问题
1.修改redis服务器的配置文件 vi redis.conf 注释以下绑定的主机地址 # bind 127.0.0.1 2.修改redis服务器的参数配置 修改redis的守护进程为no ,不启用 ...
- leetcode 有效的数独
判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...
- Windows下使用DOS命令进入MySQL数据库
先要配置环境变量 MYSQL_HOME : D:\mysql-8.0.11-winx64 Path:%MYSQL_HOME%\bin 1)新建MYSQL_HOME变量,并配置:C:\Program F ...
- mysqldump导出数据不带时区信息的问题
今天在导出数据时,发现所有timestamp字段都不带时区信息,因为我在东8区,导出的数据中所有时间都提早了8个小时 首先先看表的字段和数据 CREATE TABLE IF NOT EXISTS `a ...
- Java - 多线程与锁
进程-线程 进程,Process,处于运行中的程序,系统进行资源分配和调度的独立单位,拥有独立的内存空间(堆). 动态性:生命周期和状态: 独立性:独立实体: 并发性:Concurrency,抢占式多 ...
- Alluxio学习
介绍 Alluxio(之前名为Tachyon)是世界上第一个以内存为中心的虚拟的分布式存储系统.它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁.应用只需要连接Alluxio即可访问存储 ...