什么是线程?
    可以理解为进程中独立运行的字任务。
 
使用多线程:
    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. springboot自动装配(2)---实现一个自定义自动装配组件

    对于springboot个人认为它就是整合了各种组件,然后提供对应的自动装配和启动器(starter),基于这个流程去实现一个定义的装配组件 还是这张图 一.创建自己的自动配置工程, spring.f ...

  2. Java内部类你真的会吗?

    一.四种内部类 1.1.成员内部类 成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式: public class OuterAndInnerClass { public sta ...

  3. SpringBoot工程热部署

    SpringBoot工程热部署 1.在pom文件中添加热部署依赖 <!-- 热部署配置 --> <dependency> <groupId>org.springfr ...

  4. 关于Calendar的一些用法总结

    import java.util.Calendar; import java.security.KeyStore.TrustedCertificateEntry; import java.text.D ...

  5. android 发送邮件--实现 send email for android

    Android 发送邮件消息 用途:发送验证码,通过邮箱找回密码 不需要调用客户端直接使用代码进行发送 本项目使用到的jar包–本文结尾会附带下载链接 activation.jar additionn ...

  6. 针对Nginx日志中出现的漏洞扫描与爬虫的三种措施

    0x001 使用fail2ban工具结合防火墙(iptables | firewalld),将大量404请求的IP地址封了.(详见fail2ban使用说明:https://www.cnblogs.co ...

  7. Android CHM文件阅读器

    CHM格式是1998年微软推出的基于HTML文件特性的帮助文件系统.以替代早先的winHelp帮助系统,它也是一种超文本标识语言.在Windows 98中把CHM类型文件称作“已编译的HTML帮助文件 ...

  8. 如何在 Centos7 中安装 Mysql 5.7

    一.下载安装包 (1). 下载MySQL源码 (进入/usr/local/src目录,使用wget下载) cd /usr/local/src wget https://dev.mysql.com/ge ...

  9. java练习---2

    //程序员:罗元昊 2017.9.6public class My{       public static void main(String[] args){              int a= ...

  10. RabbitMQ(三):RabbitMQ与Spring Boot简单整合

    RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitM ...