什么是线程?
    可以理解为进程中独立运行的字任务。
 
使用多线程:
    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. 自己实现定制自己的专属java锁,来高效规避不稳定的第三方

    java juc 包下面已经提供了很多并发锁工具供我们使用,但在日常开发中,为了各种原因我们总是会用多线程来并发处理一些问题,然而并不是所有的场景都可以使用juc 或者java本身提供的锁来方便的帮助 ...

  2. Windows系列和office系列通用激活工具KMSAuto

    Windows系列和office系列通用激活工具KMSAuto KMSAuto 是一款俄罗斯人 Ratiborus 制作与设计开发的能够批量激活大客户授权版本的微软 Office 办公套件以及 Win ...

  3. spark 源码分析之十五 -- Spark内存管理剖析

    本篇文章主要剖析Spark的内存管理体系. 在上篇文章 spark 源码分析之十四 -- broadcast 是如何实现的?中对存储相关的内容没有做过多的剖析,下面计划先剖析Spark的内存机制,进而 ...

  4. 项目中操作redis改brpop阻塞模式为订阅模式的实现-java实习笔记二

    更改项目需求以及项目之前阻塞模式问题的叙述已经在上一篇说过了,详情可参考:https://www.cnblogs.com/darope/p/10276213.html  ,https://yq.ali ...

  5. 洛谷P1140 相似基因

    题目:https://www.luogu.org/problemnew/show/P1140 分析: 本题一看就知道是一道动归,其实和字串距离非常的像,只不过多了题目规定的匹配相似度罢了. 匹配的相似 ...

  6. python黑帽子学习笔记1:pyqt5 designer+wmi实现进程监视器

    环境说明:python3.6 所需要模块:wmi.pyqt5.pythonMagick 先放上一张成品效果图,如图所示: 界面利用pyqt5的designer实现,画好界面如下图所示: 画好后,保存好 ...

  7. es6的基本用法

    1. let和const <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  8. 在windows中使用 nvm 实现node多版本管理

    所谓 NVM 就是 Node Version Manager 的缩写,即 node的版本管理工具,我们可以在电脑中安装多个不同版本的node,并借由 NVM 来实现自由切换,详情可点击查看 NVM 官 ...

  9. Java基础之方法

    方法 某段代码经常使用,可以使用大括号将这段代码包括起来,起个名字,以后就使用这个名字来代替这段代码. 定义格式: 修饰符 返回值类型 方法名(参数列表) { 方法体语句:   return语句: } ...

  10. JNDI总结(一)

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Conn ...