多线程:

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

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

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

一个进程至少一个线程

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

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

弊端:效率降低

应用程序的执行是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. CH5701 开车旅行(倍增dp+set)

    传送门 解题思路: 一道比较有趣的题,解题工作主要分为两块: ①找出k(k=0表示小A先走,k=1表示小B先走,下面同理)从点i出发下一个到达的点to[k][i]; 一开始偷懒用了vector(偷懒一 ...

  2. CentOS7安装JAVA环境

    安装JAVA环境我常用的有两种形式 1.下载tar包安装 2.下载rpm包直接安装 本篇内容就写这两种形式的安装方法: JAVA程序的下载地址:https://www.oracle.com/java/ ...

  3. 最长公共子窜和最长公共子序列(LCS)

    他们都是用dp做;复杂度都是O(N方) 有一个大佬的博客写的很详细,是关于最长公共子序列的:https://blog.csdn.net/hrn1216/article/details/51534607 ...

  4. AJ学IOS(16)UI之XIB自定义Cell实现团购UI

    AJ分享,必须精品 先看效果图 自定义Cell 本次主要是自定义Cell的学习 实现自定义Cell主要有三种方法:按照使用的频繁度排序: XIB > 纯代码 > StoryBoard XI ...

  5. ClickOnce的安装路径

    win 7下C:\Users\Administrator.U5G4L4PUY34SH5C\AppData\Local\Apps\2.0\KPVZOAYK.0JE\56B55RCH.A7A\winr.. ...

  6. Python - 利用词云wordcloud,jieba和中国地图制作四大名著的热词图

    热词图很酷炫,也非常适合热点事件,抓住重点,以图文结合的方式表现出来,很有冲击力.下面这段代码是制作热词图的,用到了以下技术: jieba,把文本分词 wordcloud,制作热图 chardet,辨 ...

  7. Everything信息泄露

    Everything漏洞描述 [Everything]一款搜索文件非常快的工具,其速度之快令人震惊!它还有一个可以通过HTTP 或 FTP 分享搜索结果 的功能.它可以让用户在本地或局域网上的其他电脑 ...

  8. SringMVC入门程序

    Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架 1.Spring优点 轻量级,简单易学 高效 , 基于请求响应的MVC框架 与Spring兼 ...

  9. 硬盘性能测试工具之bonnie++

    bonnie++ 官方站点 先写内存的两倍,内存较大时比较耗时.适合简单的测试场景. # bonnie++ -u root 写测试 读测试 Version 1.97 ------Sequential ...

  10. CDNbest-访问限制

    写在开始之前 有时候我们需要对网站某个目录或整站限制只对特点的ip访问 不是在ip范围之内的统统拒绝 步骤 首先我们登录,找到我们的目标站点,点击去如下图所示 找到高级设置 添加新规则,如下 这里用到 ...