什么是线程?
    可以理解为进程中独立运行的字任务。
 
使用多线程:
    1.继承Thread类:从源码可以看到,Thread累实现了Runnable接口。
        如果多次调用start()方法,会出现异常Exception in thread “main” java.lang.IllegalThreadStateException
    2.实现Runnable接口
    在某些JVM中,i--分为如下三步:
        A.取得原有i值
        B.计算i-1
        C.对i进行赋值
    多线程同时访问,会出现非线程安全问题
    println()方法内部是同步的。
    
    currentThread()方法:可以返回代码正在被哪个线程调用。
    isAlive()方法:判断当前线程是否处于活动状态。
        活动状态:已经启动尚未终止。
    sleep()方法:使当前正在执行的线程休眠指定毫秒数。
        this.currentThread()方法返回的线程。
    getId()方法:获得线程的唯一标识。
 
停止线程:
    Thread.interrupt()方法:停止线程时使用。
        不能马上停止,做停止标记,当前线程的方法执行完以后停止。
    this.interrupted()方法:
        测试当前线程是否是已中断状态,执行完清除状态标志为false
    this.isInterrupted()方法:
         测试当前线程是否是已中断状态,不清除状态标志
    this.stop()方法:
        暴力停止线程,已废弃,不推荐使用。
        会抛出异常,但不需要捕获。
    使用return配合interrupt()也可以停止线程。
    注意:
        建议使用抛异常的方法来终止线程,因为可以在catch代码块中处理异常。
 
    Thread.yieId()方法:
        使当前线程放弃cpu资源,重新分配。
        放弃时间不确定,有可能刚放弃,马上又获得。
    线程的优先级:
        一般来说,优先级较高的线程得到的资源较多。
        setPriority():设置线程优先级。
        Java中优先级分为1~10,10个等级,小于1或者大于10都会抛出异常。
        Jdk中有3个预定义的优先级,1,5,10
 
    优先级的继承性:
        A线程启动b线程,b线程的优先级和a线程是一样的
        
    守护线程:
        守护线程具有陪伴意义,当java中不存在非守护线程,那么守护线程也就销毁了
        垃圾回收线程就是一个守护线程。
        
    synchronized()同步方法:
        非线程安全问题存在于实例变量中,局部变量不存在。
        方法内部的变量是线程私有的。
        当多个线程访问多个对象,jvm会创建多个锁。

Java学习|多线程学习笔记的更多相关文章

  1. java进阶-多线程学习笔记

    多线程学习笔记 1.什么是线程 操作系统中 打开一个程序就是一个进程 一个进程可以创建多个线程 现在系统中 系统调度的最小单元是线程 2.多线程有什么用? 发挥多核CPU的优势 如果使用多线程 将计算 ...

  2. Java基础-多线程学习目录

    1.Java多线程并发编程一览笔录 2.什么时候使用CountDownLatch 3.Java并发学习系列-绪论

  3. C#深入学习 ----多线程学习(一)第一天学习

    学习最好的方法就是总结,并写下来,能让别人看懂,自己肯定是掌握了的. 针对软件开发,一直停留在能做的层次,今天得到大牛指点,觉得有必要对这门技术深入学习. 翻阅园内各大神的文章,收益匪浅,在这里做下总 ...

  4. 【Java】多线程入门

    Java多线程学习(入门) 前言 目前对于线程的了解仅仅停留在学习python的threading库,很多线程的概念没有真正弄清楚,所以选择来系统性的学习多线程.那么这次选择的是Java的多线程学习, ...

  5. java多线程学习笔记——详细

    一.线程类  1.新建状态(New):新创建了一个线程对象.        2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...

  6. JAVA多线程学习笔记(1)

    JAVA多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一 ...

  7. Java多线程学习笔记(一)——多线程实现和安全问题

    1. 线程.进程.多线程: 进程是正在执行的程序,线程是进程中的代码执行,多线程就是在一个进程中有多个线程同时执行不同的任务,就像QQ,既可以开视频,又可以同时打字聊天. 2.线程的特点: 1.运行任 ...

  8. Java多线程学习笔记

    进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...

  9. java 多线程学习笔记

    这篇文章主要是个人的学习笔记,是以例子来驱动的,加深自己对多线程的理解. 一:实现多线程的两种方法 1.继承Thread class MyThread1 extends Thread{ public ...

随机推荐

  1. c++书籍推荐《C++编码规范》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++编程规范:101条规则.准则与 实践>:良好的编程规范可以改善软件质量,缩短上市时间,提升团队效率,简化维护工作.在<C++编程规范 ...

  2. ServiceFabric极简文档-1.1 附属文件:规划和准备 Service Fabric 独立群集部署

    准备好要充当节点的计算机 下面是要添加到群集的每台计算机的建议规格: 至少 16 GB RAM 至少 40 GB 可用磁盘空间 4 核或更高规格的 CPU 所有计算机与安全网络连接 Windows S ...

  3. Devops-运维效率之数据迁移自动化

    overmind系统上线三个月,累计执行任务800+,自动审核执行SQL超过5000条,效率提升相当明显,离"一杯咖啡,轻松运维"的目标又进了一步. 写在前边 overmind系统 ...

  4. HTTPS协议学习笔记

    在前一段时间准备面试的时候,面试官反复提到了HTTPS这个协议.我只是单纯的知道,HTTPS是安全的应用层协议 是HTTP更安全的版本,通过对称密钥加密.但是具体的其他的,可能我不太了解.今天就专门抽 ...

  5. 关于Redis的几件小事 | 高并发和高可用

    如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了. redis高并发:主从架构,一主多从,一般 ...

  6. python虚拟环境管理 Pipenv 使用说明

    安装 pip install pipenv 检查是否安装成功 pipenv --version 创建虚拟环境(在工程文件夹下) pipenv install 默认下,Pipenv统一管理所有虚拟环境 ...

  7. 从微信小程序开发者工具源码看实现原理(四)- - 自适应布局

    从前面从微信小程序开发者工具源码看实现原理(一)- - 小程序架构设计可以知道,小程序大部分是通过web技术进行渲染的,也就是最终通过浏览器的dom tree + cssom来生成渲染树:既然最终是通 ...

  8. Docker 工作原理及容器化简易指南

    Docker 非常棒! 它使软件开发者无需担心配置和依赖性,在任何地方打包,发送和运行他们的应用程序.而在与 Kubernetes 相结合后,它使应用集群部署和管理变得更方便.这使得 Docker 深 ...

  9. C++ 八数码问题宽搜

    C++ 八数码问题宽搜 题目描述 样例输入 (none) 样例输出 H--F--A AC代码 #include <iostream> #include <stdio.h> #i ...

  10. 10G文件如何对里面单词出现排序

    10G文件如何对里面单词出现排序的问题(只要文件系统支持,不限大小). 其实这个问题很简单,10G文件是很大,但是出现的字符或单词是很有限的. 单字符只有那么一百多个,单词数量满打满算,以英文单词总数 ...