概念:可以理解为在进程中独立运行的子任务。比如,QQ.exe在运行时就有很多子任务在运行,好友视屏线程,下载文件线程,传输数据线程等等。

优点:1、提升CPU资源利用率,提升系统性能。

一、多线程的实现

1.1、继承Thread类(extends Thread),Thread类实现了Runnable接口

public class Thread implements Runnable
public class MyThread extends Thread{
@Override
public void run() {
System.out.println("MyThread");
} }

1.2、实现Runnable接口(implements Runnable)

public class MyThread implements Runnable{
@Override
public void run() {
System.out.println("MyThread");
} }

注意:使用继承Thread类来开发多线程应用设计上有局限性的,因为JAVA不支持多继承,为了改变这种限制,可以使用实现  、实现Runnable接口(implements Runnable)的方式来实现多线程。

1.3、多线程的随机性 :使用多线程时,代码的运行结果和代码的执行顺序或调用顺序无关。

验证:

结果:

1.4、非线程安全:指多个线程对同一对象中同一个变量进行操作时会出现值被更改,值不同步的情况,进而程序的运行。

非线程安全

使用解决synchronized 关键字解决非线程安全问题

currentThread():返回代码段正在被哪个线程调用。

isAlive():判断当前线程是否处于活动状态。

sleep():指定毫秒数让正在执行的线程休眠。

getId():取得线程的唯一标识

二、停不了的线程

1、判断线程是否是停止状态

java 的SDK中,Thread.java类里提供了俩中方法

this.interrupted():测试当前线程是否已经中断,执行后具有将状态标识清除为false的功能。

this.isInterrupted();测试线程是否中断,但不将清除状态标识。

一、java多线程编程核心技术之(笔记)——多线程的实现的更多相关文章

  1. 《Java 多线程编程核心技术》- 笔记

    作为业务开发人员,能够在工作中用到的技术其实不多.虽然平时老是说什么,多线程,并发,注入,攻击!但是在实际工作中,这些东西不见得用得上.因为,我们用的框架已经把这些事做掉了. 比如web开发,外面有大 ...

  2. 《JAVA多线程编程核心技术》 笔记:第一章

    一.基本概念理解:1.1.进程和线程的理解1.2.同步和异步的理解(阻塞模式和非阻塞模式)1.3 线程间共享变量和不共享变量二.多线程的实现方式和构造方法:2.1 实现方式:2个2.2 构造方法:8个 ...

  3. 《JAVA多线程编程核心技术》 笔记:第六章:单例模式与多线程

    一.立即加载/"饿汉模式"和延迟加载/"懒汉模式" 立即加载(又称饿汉模式):在使用类的时候已经将对象创建完毕,常见实现方法是直接new实例化 延迟加载(又称懒 ...

  4. 《JAVA多线程编程核心技术》 笔记:第二章:对象及变量的并发访问

    一.基本概念1.安全的变量和不安全的变量2.脏读的理解3.锁重入:4.锁释放5.死循环:二.synchronized 的理解:三.synchronized 同步方法3.1 同步方法不具有继承性.3.2 ...

  5. 《JAVA多线程编程核心技术》 笔记:第七章:拾遗增补

    一.线程的状态 1.1 状态种类及理解:(一共6个) 文字说明和理解: NEW状态:线程实例化后还从未执行start()方法时的状态: RUNNABLE状态:线程进入运行的状态: TERMINATED ...

  6. 《JAVA多线程编程核心技术》 笔记:第五章:定时器Timer

    一.定时器Timer的使用 1.1 方法schedule(TimerTask task, Date time) 是否过期 执行说明 开始执行时间 time>当前时间(未过期) 在time到达时执 ...

  7. 《JAVA多线程编程核心技术》 笔记:第四章、Lock的使用

    一.使用ReentrantLock类1.1 ReentrantLock的使用:1.2 ReentrantLock的不足:1.3 正确使用Condition实现等待/通知1.4 使用多个Conditio ...

  8. 《JAVA多线程编程核心技术》 笔记:第三章:线程间通信

    一. 等待/通知机制:wait()和notify()1.1.使用的原因:1.2 具体实现:wait()和notify()1.2.1 方法wait():1.2.2 方法notify():1.2.3 wa ...

  9. Java多线程编程核心技术---单例模式与多线程

    立即加载/饿汉模式 立即加载就是使用类的时候已经将对象创建完毕. public class MyObject { //立即加载方式==饿汉模式 private static MyObject myOb ...

  10. Java多线程编程核心技术---学习分享

    继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); Sys ...

随机推荐

  1. innodb之线程及IO相关参数介绍

    引用链接:http://www.cnblogs.com/henglxm/p/4284504.html   1.IO THREAD: 负责IO的相关线程IO THREAD 1. 参数innodb_wri ...

  2. Linux 升级内核开启 TCP BBR 有多大好处

    前言 如果你有订阅一些科技新闻,应该会有看过内核在4.9当中加入了一个新的算法,来解决在有一定的丢包率的情况下的带宽稳定的问题,这个是谷歌为我们带来的干货,新的 TCP 拥塞控制算法 BBR (Bot ...

  3. 支持jewel版本的calamari

    之前测试了下,发现calamari不支持jewel版本的,是因为接口了有了一些变化,在提出这个问题后,作者给出了回答,说肯定会支持的,并且做了一点小的改动,就可以支持了,这个作者merge了到了git ...

  4. HotSpot类模型之InstanceKlass

    上一篇 HotSpot源码分析之类模型 介绍了类模型的基础类Klass的重要属性及方法,这一篇介绍一下InstanceKlass及InstanceKlass的子类. 1.InstanceKlass类 ...

  5. Rest语法,传入多个参数

    Rest语法,传入多个参数 js调用函数时可以传入任意数量的参数,而不报错.如果传入的参数没有用到,那么传入多余的参数没有任何用处,那不是瞎子点灯白费蜡嘛.为了充分利用传入的每一个参数,我们可以采用R ...

  6. 用JavaScript做精灵图

    用JavaScript做精灵图 精灵图可以不用在给每一个小块一 一的修改位置.主要原理是找到整张的背景图与li的下标的数学关系. 这是一大张背景图,这个背景图的位置其实是有规律的,每两张之间间隔一个固 ...

  7. Kubernetes K8S之Taints污点与Tolerations容忍详解

    Kubernetes K8S之Taints污点与Tolerations容忍详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master C ...

  8. Ramnit蠕虫病毒分析和查杀

    Ramnit是一种蠕虫病毒.拥有多种传播方式,不仅可以通过网页进行传播,还可以通过感染计算机内可执行文件进行传播.该病毒在2010年第一次被安全研究者发现,从网络威胁监控中可以看出目前仍然有大量的主机 ...

  9. 前端web安全-CSRF基础入门

    前言 今天找了个新地方进行学习 嘿嘿  采光不错!特别适合看书呢. 前言 1.CSRF 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click att ...

  10. ctf-工具-binwalk

    binwalk在玩杂项时是个不可缺的工具.1.最简单的,在玩隐写时,首先可以用它来找到其中的字符串例如:在铁人三项,东北赛区个人赛中,有一道题它直接给了一个文件,没有后缀,不知道是什么文件先binwa ...