多线程
进程和线程的区别:每一个进程拥有自己的一整套变量,而线程则共享数据。
java.lang.Thread
    static void sleep(long millis) 线程休眠给定的毫秒数,用于暂停当前线程的活动。
    void interrupt() 向线程发送中断请求。线程中断状态将被设置为true。若当前该线程被一个sleep调用阻塞,将会抛出InterruptedException异常。
    static boolean interrupted() 判断当前线程是否被中断。调用该方法会将当前线程的中断状态重置为false。
    boolean isInterrupted() 判断当前线程是否被中断。不改变线程状态。
    static Thread currentThread() 返回当前线程的Thread对象。
    void join() 等待终止线程。
    void join(long millis) 等待millis毫秒数后终止线程。
    Thread.State getState() 得到线程状态(线程6态)
    void setPriority(int newPriority) 设置线程优先级。必须在1到10之间。
    static int MIN_PRIORITY 最小优先级1
    static int NORM_PRIORITY 优先级5
    static int MAX_PRIORITY 最高优先级10
    static void yield() 使当前执行线程处于让步状态。其余优先级大于等于该线程优先级的线程将会被调度。
    void setDaemon(boolean isDaemon) 标识该线程为守护线程,这一方法必须用在线程启动之前。

线程6态:New(新生)、Runnable(可运行)、Blocked(被阻塞)、Waiting(等待)、Timed waiting(计时等待)、Terminated(被终止)

守护线程:守护线程的唯一用途就是为其它线程提供服务。当只剩下守护线程时,虚拟机就退出了。守护线程应该永远不去访问固有资源。

锁:
java.util.concurrent.locks.Lock
    void lock() 获取这个锁;若锁同时被另一个线程拥有则发生阻塞。
    void unlock() 释放这个锁。
java.util.concurrent.locks.ReentrantLock
    ReentrantLock() 构建一个可以被用来保护临界区的可重入锁。
    ReentrantLock(boolean fair) 构建一个带有公平策略的锁。公平锁偏爱等待时间最长的线程,这一公平的保证大大降低了性能,因此默认锁不是公平锁。

条件对象:线程进入临界区,却发现需满足某一条件才能执行。使用条件对象来管理那些已经获得了一个锁,但是却不能做有用工作的线程。
java.util.concurrent.locks.Lock
    Condition newCondition() 返回一个与该锁相关的条件对象。
java.util.concurrent.locks.Condition
    void await() 将该线程放到条件的等待集中。
    void signalAll() 解除该条件的等待集中的所有线程阻塞状态。
    void signal() 从该条件的等待集中随机选择一个线程,解除其阻塞状态。

锁和条件的关键:
    锁用来保护代码片段,任何时候都只能有一个线程执行被保护的代码。
    锁可以管理视图进入被保护代码片段的线程。
    锁可以拥有一个或多个相关的条件对象。
    每个条件对象管理那些已经进入被保护的代码段但还不能运行的线程。

synchronized关键字:从1.0开始,Java中每个对象都有一个内部锁。若一个方法用synchronized关键字声明,那么对象的锁将保护整个方法。要调用该方法,线程必须获得内部的对象锁。

java.lang.Object
    void notifyAll() 解除在该对象上调用wait方法的线程的阻塞状态。
    void notify() 随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态。
    void wait() 导致线程进入等待状态知道它被通知。
    void wait(long millis) millis 毫秒数  nanos 纳秒数
    void wait(long millis,int manos) 导致线程进入等待状态知道它被通知或者经过指定的时间。

Java——多线程基础知识的更多相关文章

  1. Java 多线程——基础知识

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  2. Java多线程基础知识笔记(持续更新)

    多线程基础知识笔记 一.线程 1.基本概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是 ...

  3. Java多线程基础知识总结

    2016-07-18 15:40:51 Java 多线程基础 1. 线程和进程 1.1 进程的概念 进程是表示资源分配的基本单位,又是调度运行的基本单位.例如,用户运行自己的程序,系统就创建一个进程, ...

  4. Java多线程基础知识篇

    这篇是Java多线程基本用法的一个总结. 本篇文章会从一下几个方面来说明Java多线程的基本用法: 如何使用多线程 如何得到多线程的一些信息 如何停止线程 如何暂停线程 线程的一些其他用法 所有的代码 ...

  5. JAVA多线程基础知识(一)

    一. 基础知识 要了解多线程首先要知道一些必要的概念,如进程,线程等等.开发多线程的程序有利于充分的利用系统资源(CPU资源),使你的程序执行的更快,响应更及时. 1. 进程,一般是指程序或者任务的执 ...

  6. Java多线程基础知识总结笔记

    本篇笔记记录一些在Java多线程编程中常见的关键字,比较简单和基础的就不写太详细了. 一.Thread类(其实也是应用了Runnable接口)和Runnable接口(只有一个run方法,应用该类必须重 ...

  7. Java多线程基础知识例子

    一.管理 1.创建线程 Thread public class Main { public static void main(String[] args) { MyThread myThread = ...

  8. Java多线程基础知识(二)

    一. Java线程具有6种状态  NEW 初始状态,线程被创建,但是还没有调用start方法. RUNNABLE 运行状态,java线程将操作系统中的就绪和运行两种状态笼统的称作进行中. BLOCKE ...

  9. Java多线程-基础知识

    一. 进程是执行中的程序,程序是静态的(我们写完以后不运行就一直放在那里),进程是执行中的程序,是动态概念的.一个进程可以有多个线程. 二. 多线程包含两个或两个以上并发运行的部分,把程序中每个这样并 ...

  10. Java多线程基础知识(五)

    一. Java中的13个原子操作类 在Jdk1.5中,这个包中的原子操作类提供了一种用法简单,性能高效,线程安全的更新一个变量的方式. 1. 原子更新基本类型类 AtomicBoolean : 原子更 ...

随机推荐

  1. [转]Git详解之四 服务器上的Git

    服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我们不鼓励这样做 ...

  2. 吞吐量(TPS)、QPS、并发数、响应时间(RT)

    1. 响应时间(RT)  响应时间是指系统对请求作出响应的时间.直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间.由于一个系统通常会提供许多功能, ...

  3. 阿里云ECS安装JAVA+MYSQL+NGINX

    2019独角兽企业重金招聘Python工程师标准>>> 1.准备工作 查看linux版本: linux版本为CentOS 7.4 查看系统信息: 系统为64位 确保服务器系统处于最新 ...

  4. UDT的Sender和Receiver

    Sender算法 数据结构和变量: Sender's Loss List:发送方的loss list用来存储丢失包的序列号,序列号来自于两个地方,一是receiver通过NAK包反馈回来,二是超时事件 ...

  5. Vim Install-Could not get lock......

    在Ubuntu下安装Vim编辑器时,出现错误: 可能原因: 上次安装或更新没有正常完成,导致资源被锁. 解决方案: 删除异常资源,重新下载: 注意 删除异常资源时,一定要切换到root用户,否则操作无 ...

  6. 代码,绘画,设计常用的颜色名称-16进制HEX编码-RGB编码 对照一览表

    排列方式,英文名称的字典序 颜色名 HEX16进制编码 RGB编码 AliceBlue F0F8FF 240,248,255 AntiqueWhite FAEBD7 250,235,215 Aqua ...

  7. P3807【模板】卢卡斯定理

    题解大部分都是递归实现的,给出一种非递归的形式 话说上课老师讲的时候没给代码,然后自己些就写成了这样 对于质数\(p\)给出卢卡斯定理: \[\tbinom{n}{m}=\tbinom{n \bmod ...

  8. 《Docker从入门到跑路》之存储卷介绍

    默认情况下,容器会随着用户删除而消失,包括容器里面的数据.如果我们要对容器里面的数据进行长久保存,就不得不引用存储卷的概念. 在容器中管理数据持久化主要有两种方式:1.数据卷(data volumes ...

  9. 201771030121-王国伟 实验一 软件工程准备—<问题提出与博客首秀>

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE 本次作业要求链接 https://www.cnblogs.com/nwnu- ...

  10. Flutter 标签类控件大全Chip

    老孟导读:Flutter内置了多个标签类控件,但本质上它们都是同一个控件,只不过是属性参数不同而已,在学习的过程中可以将其放在放在一起学习,方便记忆. RawChip Material风格标签控件,此 ...