程序,进程和线程
程序:没有执行的指令序列和相关的数据的集合(如: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. Alpha冲刺 - (9/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 进一步优化代码,结合自己负责的部分修 ...

  2. java中关于Collection和Map相关的类&接口之间的关系

    上图(引用自)

  3. C++ springf()的用法(转)

    转:http://blog.csdn.net/masikkk/article/details/5634886 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprin ...

  4. 关于获取客户端Mac地址

    private static string GetClientMAC() { string mac_dest = string.Empty; try { string strClientIP = Ht ...

  5. 神器与经典--sp_helpIndex

    ======================================================= 每每和那些NB的人学习技术的时候,往往都佩服他们对各个知识点都熟捻于心,更佩服的是可以在 ...

  6. 基于.net standard 的动态编译实现

    在前文[基于.net core 微服务的另类实现]结尾处,提到了如何方便自动的生成微服务的客户端代理,使对于调用方透明,同时将枯燥的东西使用框架集成,以提高使用便捷性.在尝试了基于 Emit 中间语言 ...

  7. C# 调用C++动态库注意事项

    C# 调用C++动态库注意事项 最近项目上需要在C#中调用C++,期间遇到不少坑,总结如下: 1.in const char*   对应C#中string 或  IntPtr 2.out const ...

  8. solr7.4 centos7安装

    环境:centos7.JDK1.8.solr 自带Jetty启动 一.安装JDK1.8环境 1.下载JDK jdk-8u172-linux-x64.rpm 下载地址:http://www.oracle ...

  9. 「AH2017/HNOI2017」礼物

    题目链接 戳我 \(Solution\) 应为我们可以将任意一个数列加上一个非负整数,即可以变为将一个数列加上一个整数(可以为负),我们将这个整数设为\(z\).所以要求的式子的变为: \[\sum_ ...

  10. Mysql内置功能《一》流程控制

    delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THEN SELECT 1; ELSE ...