------- android培训、java培训、期待与您交流! ----------

多线程总结:
1,进程和线程的概念。
|--进程:正在运行中的程序
|--线程:进程中的一个执行单元,负责进程中程序执行的控制单元
2,jvm中的多线程体现。
|--主线程,垃圾回收线程,自定义线程。以及他们运行的代码的位置。
|--主线程:负责执行main函数中的内容
|—垃圾回收线程:负责垃圾回收器运行的线程
3,什么时候使用多线程,多线程的好处是什么?创建线程的目的?
|--当需要多部分代码同时执行的时候,可以使用多线程。
|--多线程可以把任务分块执行,分块后可以同时进行而不用等待,这样效率更高
|--目的:为了开启一个单独的执行路径,运行指定的代码 
4,创建线程的两种方式。
|--继承Thread
|--步骤1 定义类继承Thread类 
2 覆盖Thread类中的run方法
3 创建Thread类的子类对象创建线程对象
4 调用线程中的start方法开启线程
|--实现Runnable
|--步骤1 定义一个类实现Runnable接口
2 覆盖Runnable接口中的run方法
3 创建该接口的子类对象
4 通过Thread类进行线程的创建,并将Runnable接口的子类对象作为Thread类
的构造函数的实参进行传递
5 调用Thread类中的start方法开启线程
|--两种方式的区别?
通过Runnable接口可以降低和Thread对象的耦合性
5,线程的5种状态。
对于执行资格和执行权在状态中的具体特点。
|--被创建:
|--运行:具备cpu的执行资格和执行权
|--冻结:释放了cpu的执行资格和执行权
|--临时阻塞:具备cpu的执行资格不具备cpu的执行权
|--消亡:
6,线程的安全问题。
|--安全问题的原因:一个线程在执行多条操作共享数据的过程中,其他线程参与了运算
|--解决的思想:线程任务中有没有共享数据,该共享数据是否被多条语句惭怍
|--解决的体现:synchronized
保证一个线程在执行多条操作共享数据的语句时,其他线程不得参与执行,
|--同步的前提:但是加上同步还出现安全问题,就需要用前提来思考。
保证在同步中有多个线程,保证多个线程在同步中使用的是同一个锁
|--同步的两种表现方法和区别:同步代码块和同步函数
|--同步的好处和弊端:好处是解决了多线程的安全问题,弊端是会降低性能
|--单例的懒汉式。在被多线程并发访问时,就会出现多线程的安全问题 
解决办法 改用同步代码块,可以通过双重判断的形式来完成这个过程
class Single
{
private static Single s = null;
private Single(){}
public static  Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s = new Single();
}
}
return s;
}
}
|--死锁。
常见的死锁情况就是同步嵌套,同步里还有同步,两个同步用的是不一样的锁 
7,线程间的通信。等待/唤醒机制。
|--概念:多个线程,不同任务,处理同一资源。 
生产者消费者问题,
|--等待唤醒机制。使用了锁上的 wait notify notifyAll.
wait()等待,将正在执行的线程释放其执行资格和执行权,并存储到线程池中 
notify()唤醒 唤醒线程池中被wait的线程,一次唤醒一个,而且是任意的
notifyAll()唤醒全部,可以将线程池中的所有wait线程都唤醒
|--生产者/消费者的问题。并多生产和多消费的问题。  while判断标记。用notifyAll唤醒对方。
|--JDK1.5以后出现了更好的方案
Lock接口替代了synchronized  
Condition接口替代了Object中的监视方法,并将监视器方法封装成了Condition
和以前不同的是,以前一个锁上只能有一组监视器方法。现在,一个Lock锁上可以多组监视器方法对象。
可以实现一组负责生产者,一组负责消费者。 
|--wait和sleep的区别。
两种方法都可以让线程处于冻结状态
sleep()必须指定时间,wait可以指定时间,也可以不指定
sleep会释放执行权,不会释放锁,wait会释放执行权和锁
8,停止线程的方式。
|--原理:当线程没有了要运行的代码线程就结束了,以为这任务结束,县城小事
|--表现:--中断。
Thread类中有个interrupt方法,可以将线程的冻结状态清除,让线程恢复到执行资格
9,线程常见的一些方法。
|--setDaemon()将其中的线程标记为后台线程,后台线程就对前台线程有一定的依赖性
如t2.setDaemon(true)
|--join();当主线程遇到有join方法的线程时 主线程释放执行权和执行资格,等待有join方法          的线程执行
|--优先级:线程抢到cpu的频率高与低
|--yield();临时暂停,释放执行权
|--在开发时,可以使用匿名内部类来完成局部的路径开辟。 
class  
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
}
}
*/

转载于:https://www.cnblogs.com/chen-bao-feng/archive/2013/03/22/2975106.html

黑马程序员_io流详解相关推荐

  1. 【iOS沉思录】如何招聘一个靠谱的 iOS程序员+面试题详解

    说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:<招聘一个靠谱的 iOS>,其中共55题,除第一题为纠错题外,其他54道均为简答题. 出题者简介: 孙源(sunnyxx),目前就 ...

  2. 新人程序员入门问题详解

    写在最前的自我介绍: 什么是程序员之乱? 如果你想更好的使用本站,建议你先读下这篇文章: 问答的艺术,如何提出问题和选择答案? 职业介绍篇: 程序员职业优缺点? 程序员是不是青春饭?(程序员30/35 ...

  3. 黑马程序员--打印流、序列输入流、Vector 类

    --------- android培训.java培训.期待与您交流! --------- 1 打印流 打印流: 该流提供了打印方法,可以将各种数据类型的数据都原样打印. 字节打印流: PrintStr ...

  4. filewriter判断是否关闭_IO流详解

    概述 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.IO其实有两类, ...

  5. 黑马程序员————IO流------(3)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- File类: 流只能操作数据,若想要用流操作被文件封装的数据信息,必须用file对象. > ...

  6. 黑马程序员————IO流3(day20)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流3 l  File概述 l  File类常见方法 ...

  7. 黑马程序员————IO流2(day19)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流2 l  BufferedWriter l  B ...

  8. 黑马程序员————IO流1(day18)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流1 l  其它对象(System) l  其它对 ...

  9. 黑马程序员 IO流

       ------- android培训.java培训.期待与您交流! ----------  IO流 java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类: 字符流和字 ...

最新文章

  1. linux 操作系统级别监控 df 命令
  2. SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )
  3. CaaS环境下实践经验总结(二):监控系统部署
  4. 5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授
  5. FJWC 2019 游记
  6. Jenkins构建自动化任务
  7. java数据抽取到数据仓库_关于数据增量抽取的模拟实现——脚本实现
  8. ssm框架里面前端拿HTML写,ssm框架引入Vue,声明式渲染,标签的href拼接字符串
  9. 技术MBA高科技企业的“宠儿”
  10. 网络编程(一)基础知识
  11. python wxpython backend wxagg_在wxPython中使用draw()(复制轴)绘制不正确
  12. System.Security.Cryptography.RSA.FromXmlString 系统找不到指定的文件和X509读取证书文件系统找不到指定的文件异常
  13. ArcGIS Server10.2服务启动不了之http://localhost:6080/arcgis/manager无法打开之arcMap 无法打开6080admin问题解决之路
  14. Linux下的特殊权限SetUID
  15. java服务器后端框架_现在主流的java后端框架
  16. Freebase Data Dump结构初探
  17. log buffer及日志管理深入分析及性能调整(七)
  18. 使用纯碎的HTML CSS制作多拉A梦(即为CSS画图)
  19. Project Professional安装:Windows Installer(MSI)与即点即用
  20. python中beautifulsoup是什么,Python Beautiful Soup简介

热门文章

  1. Node.js 线程你理解的可能是错的 1
  2. AD RMS高可用(四)添加rms成员服务器
  3. 你需要的是持续的服务改进 1
  4. 如何选择Sencha Touch和jQuery Mobile
  5. 学编程决不可心浮气燥(转)
  6. 1423. 可获得的最大点数
  7. 976. 三角形的最大周长
  8. 9-16 原生命令和redis-trib.rb对比
  9. Java3种错误_3种常见的Class级别的错误
  10. redis怎么开启_关于Redis数据库入门必备的学习点