多线程:

进程:正在进行中的程序(直译)

线程:执行路径,就是进程中负责程序执行的控制单元(执行路径);

一个进程中可以多个路径,称为多线程

一个进程至少一个线程

每一个线程都有自己运行的内容,这个内容称为线程要执行的任务

多线程好处:解决了多部分同时运行的问题

弊端:效率降低

应用程序的执行是CPU在做着快速的切换完成的,切换是随机的

jvm启动时就启动了多个线程,至少两个线程

1、执行main函数的线程

该线程的代码都定义在main函数中

2、负责垃圾回收的线程

finalize清除垃圾,重新分配资源

System.gc()启动垃圾回收器

主线程运行示例:

class  Demo  extends   Thread

{

private String name;

Demo (String name)

{

this.name=name;

}

public void run()

{

for(int x=0;x<10;x++)

{

for(int y=-99999;y<999999999;y++){}

System.out.println(name+“....x”+x);

}

}

}

class Threaddemo

{

Demo d1=new Demo(“旺财”);

Demo d2=new Demo(“xiaoqiang”);

d1.start();

d2.start();  //开启线程,运行run方法

}

创建线程:

1、继承Thread类

步骤:

1、定义一个类继承Thread 类;

2、覆盖Thread 中的run方法;

3、直接创建Thread的子类对象;

4、调用start启动线程;

创建线程的目的是为了开启一条执行路径,取运行指定代码和其他代码同时运行

而运行的指定代码就是这个执行路径的任务

JVM创建的主线程的任务都定义在主函数中

而自定义的线程任务在哪

Thread类用于描述线程,线程是需要任务的,所以Thread类也对任务的描述

这个任务通过Thread类中的run方法来体现,run方法中定义就是线程要运行的任务代码

开启线程是为了运行指定代码,所以继承Thread,复写run方法

调用start和run的区别

getName()返回该线程的名字,

currentThread()正在运行的线程名字

Cpu的执行资格:可以被CPU处理,在处理队列中排队

Cpu的执行权:正在被cpu处理

临时阻塞状态:具备执行资格,等待执行权

被创建           start()            运行          sleep(time)     wait()        冻结

Sleep(time)时间到  notify()

Run方法结束,线程的任务结束

Stop()

消亡

2、创建线程的第二种方式:implements        runnable接口

1、定义类实现runnable接口

2、覆盖接口中run方法

3、通过thread类创建线程对象,并将runnable接口中子类对象作为thread类参数传递

4、使用start开启线程

实现runnable接口的好处:

1、将线程的任务从线程的子类中分离出来,进行了单独的封装

线程安全问题解决思路:将多条操作共享数据的线程代码封装起来,当有线程执行代码时,其他不能参与运算;

同步代码块 :synchronized(对象)

{

需要被同步的代码;

}

同步的好处:解决了线程的安全问题;

同步的弊端:相对降低了效率,因为同步外的线程都会判断同步锁

多线程的单例:

单例设计模式:

延迟加载设计模式:

线程间通信(多个线程在处理同一资源,但是任务却不同):

1、这些方法存在于同步中;

2、使用这些方法时必须要标识所属的同步的锁;

等待、唤醒机制:

涉及的方法:1、wait():让线程处于冻结状态,被wait的线程会被存储线程池

2、notify() 唤醒线程池中任意一个线程

3、notifyAll() 唤醒线程池中所有线程

这些方法都必须定义在同步中,因为这些方法是用于操作线程状态的方法

必须要明确到底操作的是哪个锁上的线程

为什么这些方法定义在object类中

因为这些方法是监视器的方法,监视器本身就是一个锁

Wait和sleep的方法:

1、wait可以指定时间也可以不指定

Sleep必须指定时间

2、在同步中,对CPU的执行权和锁的处理不同

Wait:释放执行权,释放锁

Sleep:释放执行权,不释放锁

停止线程:

1、stop方法(已过时)

2、Run方法结束

任务中都有循环,通过控制循环结束

Interrupt()将线程从冻结状态恢复到运行状态,让线程具备CPU的执行资格

守护线程setDaemon(true)将该线程标记为守护线程,当所有线程被守护时,CPU退出

t1.join()方法:线程要申请加入进来,运行,在t1线程终止之后。临时加入一个线程运算时可以使用该方法

Java笔记(day13)的更多相关文章

  1. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  2. java笔记00-目录

    --2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:

  3. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  4. 转 Java笔记:Java内存模型

    Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...

  5. servlet(6) - servlet总结 - 小易Java笔记

    垂阅前必看: 这都是我总结的我觉得是学习servlet应该掌握的,我在学习期间也做了一个博客项目来让所学的知识得以巩固.下面就是博客项目链接.前面的servlet相关的笔记总汇,还有就是我把觉得在学习 ...

  6. Java笔记 —— 继承

    Java笔记 -- 继承 h2{ color: #4ABCDE; } a{ text-decoration: none!important; } a:hover{ color: red !import ...

  7. Java笔记 —— 方法重载和方法重写

    Java笔记 -- 方法重载和方法重写 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red ...

  8. Java笔记 —— 初始化

    Java笔记 -- 初始化 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red !impo ...

  9. Java笔记 —— this 关键字

    Java笔记 -- this 关键字 h2{ color: #4ABCDE; } a{ color: blue; text-decoration: none; } a:hover{ color: re ...

  10. Java 笔记 —— java 和 javac

    Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...

随机推荐

  1. MODIS系列之NDVI(MOD13Q1)四:MRT单次及批次处理数据

    前言: 本篇文章的出发点是因为之前接触过相关研究,困囧于该系列资料匮乏,想做一个系列.个人道行太浅,不足之处还请见谅.愿与诸君共勉. 数据准备: MODIS数据产品MOD13Q1—以2010年河南省3 ...

  2. JSR303完成validate校验并编写BeanValidator工具类

    一.引入pom依赖 <!-- validator --> <dependency> <groupId>javax.validation</groupId> ...

  3. input相关

    input相关 在ios中输入英文首字母默认大写取消方法 <input autocapitalize="off" autocorrect="off" /& ...

  4. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(四)之Operators

    At the lowest level, data in Java is manipulated using operators Using Java Operators An operator ta ...

  5. 使用snapjs实现svg路径描边动画

    一,snap.svg插件在近几天,突然接到一个需求,内容是要在网页上写一个路径的动画,还需要可以随意控制动画的速度,开始于结束,本来是一个图片可以解决的问题,结果就这样变难了呀,在网上查一会之后,突然 ...

  6. 熬夜整理出来的干货:Python+Pycharm+PyQT5可视化程序设计入门

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:朱淑强 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  7. 2020不平凡的90天,Python分析三个月微博热搜数据带你回顾

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:刘早起早起 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  8. Python程序设计 实验 1 熟悉 IDLE 和在线编程平台

    ------------恢复内容开始------------ 安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2 ...

  9. 12. 前后端联调 + ( proxy代理 ) + ( axios拦截器 ) + ( css Modules模块化方案 ) + ( css-loader ) + ( 非路由组件如何使用history ) + ( bodyParser,cookieParser中间件 ) + ( utility MD5加密库 ) + ( nodemon自动重启node ) + +

    (1) proxy 前端的端口在:localhost:3000后端的端口在:localhost:1234所以要在webpack中配置proxy选项 (proxy是代理的意思) 在package.jso ...

  10. [PHP][thinkphp5] 学习三:函数助手实例说明

    来源:http://blog.csdn.net/lunsunhuan1825/article/details/71086487 load_trait:快速导入Traits,PHP5.5以上无需调用 / ...