程序,进程和线程
程序:没有执行的指令序列和相关的数据的集合(如: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笔记之线程的更多相关文章

  1. 操作系统学习笔记----进程/线程模型----Coursera课程笔记

    操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...

  2. python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon)

    python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon) 前言 今天小编YOYO请xiaoming和xiaowang吃火锅,吃完火锅的时候会有以下三种场景: - ...

  3. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  4. 笔记-python-多线程-深入-1

    笔记-python-多线程-深入-1 1.      线程池 1.1.    线程池:控制同时存在的线程数量 threading没有线程池,只能自己控制线程数量. 基本有两种方式: 每间隔一段时间创建 ...

  5. JUC源码学习笔记5——线程池,FutureTask,Executor框架源码解析

    JUC源码学习笔记5--线程池,FutureTask,Executor框架源码解析 源码基于JDK8 参考了美团技术博客 https://tech.meituan.com/2020/04/02/jav ...

  6. 0040 Java学习笔记-多线程-线程run()方法中的异常

    run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为 ...

  7. 0039 Java学习笔记-多线程-线程控制、线程组

    join线程 假如A线程要B线程去完成一项任务,在B线程完成返回之前,不进行下一步执行,那么就可以调用B线程的join()方法 join()方法的重载: join():等待不限时间 join(long ...

  8. zeromq源码分析笔记之线程间收发命令(2)

    在zeromq源码分析笔记之架构说到了zmq的整体架构,可以看到线程间通信包括两类,一类是用于收发命令,告知对象该调用什么方法去做什么事情,命令的结构由command_t结构体确定:另一类是socke ...

  9. [Android学习笔记]子线程更新UI线程方法之Handler

    关于此笔记 不讨论: 1.不讨论Handler实现细节 2.不讨论android线程派发细节 讨论: 子线程如何简单的使用Handler更新UI 问题: android开发时,如何在子线程更新UI? ...

随机推荐

  1. read与write

    函数原型 ssize_t read(int filedes, void *buf, size_t count);   ssize_t write(int filedes, void* buf, siz ...

  2. ASP.NET Identity + Entity Framework 6 注意

    最近一个项目使用ASP.NET Identity + Entity Framework 6开发,本来一切正常. 某时注意到,更改密码功能程序执行起来没有问题,界面上也报修改密码成功,但实际上密码并没有 ...

  3. Amobea读写分离

    Amoeba的中文意思是变型虫,Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的    规则,将SQL请求发送到特定 ...

  4. 16、Semantic-UI之模态窗口

    16.1 定义模态窗口 示例:定义基础的模态窗口 <!DOCTYPE html> <html lang="en"> <head> <met ...

  5. NLP常用开源/免费工具

    一些常见的NLP任务的开源/免费工具, *Computational Linguistics ToolboxCLT http://complingone.georgetown.edu/~linguis ...

  6. scrapy爬虫框架入门实战

    博客 https://www.jianshu.com/p/61911e00abd0 项目源码 https://github.com/ppy2790/jianshu/blob/master/jiansh ...

  7. Split 之特殊用法

    java中split()特殊符号"." "|" "*" "\" "]"   关于点的问题是用stri ...

  8. 使用PowerShell自动部署ASP.NetCore程序到IIS

    Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能.有关于更多PowerShell的信息,可参阅百度词条 接 ...

  9. HTTP杂项

    HTTP请求头中的origin, referer和host三个字段的区别 host 描述请求将被发送的目的地,包括,且仅仅包括域名和端口号 在任何类型请求中,request都会包含此header信息. ...

  10. Mysql链接字符串问题

    <add key="ConnstringMySql" value="server=xxx.xxx.xxx.xxx;database=YourDatabase;uid ...