找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[ JAVA初中级开发 ] [守望者 java初中级视频]10_java线程

2014-08-18 20:39| 发布者: zhouy | 查看: 2230 | 收藏

摘要: 内容简介:介绍java线程基本理论包括创建线程,线程的状态,以及线程之间如何通信,线程通信之间要注意的问题,最后通过实例练习生产者消费者模式,理解实际中如何使用线程. ... ... ... ... ... ...

1.进程:可以简单的理解成一个应用程序

2.线程:多线程环境下,一个进程对应多个线程,我们可以简单的理解一个应用程序执行的线索.每一个线程对应于一个代码片段的执行,多个线程交替的执行独自的代码片段,知道执行完所有的代码片段.

2.线程创建,启动线程

1.继承Thread

     通过Thread类的实例调用start(),启动线程,执行线程的run()

2.通过实现Runnable

     通过Thread的构造函数传入实现了runable接口的类.然后调用   start(),启动线程,执行线程的run()。

 

区别:由于继承是单继承,所以通过继承Thread类这种方式不讨适合代码的扩展,一般都选用实现Runnable.

 

 3.后台进程

  

 

   Java线程分为:用户线程和后台进程,用户进程也叫前台进程,后台进程也可以叫做守护进程或者服务进程.

当我们通过 thread.setDaemon(true);来设置一个线程为后台进程还是前台进程,false的时候就是代表的是用户进程(前台进程),true就是守护进程.

 当所有的用户进程都执行完毕的时候,意思就是说JVM中只有后台进程的时候,main执行完就退出JVM  JVM  exit方法

 

4.联合进程

Main线程和我们的自定义线程之间交替的执行,如果要改变这种方式

我们可以通过join函数实现

Main线程和自定义线程合并成一个线层,然后把自定义的线程加入进来,目前只有一个线程执行,只有一个线层的时候 我们是顺序的方式执行  所以呢,一直执行自定义线程,执行完后才执行后面的代码.

 

5.线程之间的调度

 

在多线程的环境下,每一次执行那个线程我们是不知道的,并且每次只能实行一个线程

线程调度有两种方式:1)协作   2)独占

 

协作:线程的执行时间完全由我们的线程自己独立的控制,等线程执行完后呢,主动的通知操作系统 执行下一个线程

独占:线程的执行时间完全交给操作系统来处理,并且每次只有有一个线程执行,当线程执行完后  然所有的其他的线程争抢CPU的执行时间,刚刚王的线程有可能再次的获得CPU的执行的时间.

Java采用是独占,因为协作单个线程的执行时间不可控制.比如一个线程一直执行下去.

Java线程执行的优先级,但是不一定有效.比如优先级高的线程有可能不能被执行,java的线程的优先级完全由操作系统控制.

 

7.java线程的实现

 

     用户空间级别 A

-------------------------------------------------

     内核级别(轻量级别的进程)  B

 

A:所有都在用户空间关键创建,维护,对于操作系统级别B 无法感知.不便于管理

B.所有线程都是用内核进程创建以及管理,这样比较消耗性能.

 

Java提供了一种混合模式:用户空间级别的线程和轻量级别的进程B有个1对1的映射.一个java线程对应一个轻量级别的进程

 

 

8.线程的状态

1)创建       2)启动线程      3)运行线程    4)阻塞    5)死亡

 

9.线程的安全

 就是在多线程的环境下,对于共享变量(公有的变量)的操作,如何 不附加线程安全的控制的话,能产生正确的数据.对于单线程是不会出现线程安全的问题

 

 10。如何避免线程安全

   synchronized 代码块

   Synchronized 修饰方法;

   

  Synchronized(对象A){

//线程不安全的代码

}

对象A目前可以是所有的对象,一般使用当前对象

Synchronized 可以修饰方法同样实现线程的安全

代码块更加细粒度一些,他只是呢关注有线程安全的局部代码

对于复杂的方法呢  我们修饰Synchronized修饰方法

 

11.线程之间的通信

Notify   nofifyall   wait (Object的方法)实现线程之间的通信

 

12.常见的同步问题

  死锁:线程之间相互的拥有对象的资源,然后相互的等待。

  活锁:线程1申请资源A,线程2也申请资源A,线程3申请资源A........这样时候线程1释放资源.A  线程3获得资源A,线程4等待资源A,线程3释放资源A,线程4获得资源A,同样的方式进行下去,线程2永远不会获得资源A。

 优先级倒置:优先级低的线程先执行.

线程的饥饿:线程  A  B  C争抢相同的资源,同时 线程A和B之间相互的释放和获得资源   C永远无机会参与.

 

对于同步的问题:只要写好多线程的代码,会避免以上的情况

 

13.常用的方法解释.

 1.Stop:已经过时 不提倡使用,很容易照成死锁.

 2.interrupt():中断正在执行的代码,对于没有执行的代码无意思.

  不一定能达到中断线程的效果

比如说,当线程处于sleep,join,wait等方法的时候,线程调用interrupt()

只能中断调用以上三种方法而处于阻塞状态。然后抛出interruptException。

一般结合贡献变量来控制线程的中断.


3.yeild():他可以让一个处于运行时或则运行中的线程停止下来,恢复到就绪的状态 和其他的线程参与CPU时间片的竞争.

 

4.sleep:让一个线程休眠 把cpu实行时间片给其他的线程

当达到休眠时间 自动恢复执行.

 

4.isinterrupt():判断当前线程是否被中断

 

5.isLive():判断当前线程是否是活动状态


java线程_01:

 

java线程_02:


java线程_03:

会员评论  

已有0参与评论

推荐阅读

[守望者   java初中级视频]22_javaNIO,AIO编程
[守望者 java初中级视频]22_javaNIO,
内容简介:本课程介绍阻塞,非阻塞,同步和异步的基本概念,介绍javaNIO,AIO
[守望者 算法视频]01_数据存储(链表与数组)
[守望者 算法视频]01_数据存储(链表与
本章重点介绍数据的在计算机的存储方式 :连续存储(数组)与链式存储,同时
[守望者   java初中级视频]00_java初中级课程学习导航
[守望者 java初中级视频]00_java初中
内容简介:全面贾少这套视频课程学习需要具备的理论基础,以及适合的学习人群
【守望者 游戏项目】基于cocos2d-x的跑酷游戏项目教程
【守望者 游戏项目】基于cocos2d-x的跑
Cocos2d-x跑酷游戏项目教程Cocos2d-x跑酷游戏项目教程cocos2d-x特性cocos2
【守望者 观点】智能路由和Wi-Fi探针是一对好基友
【守望者 观点】智能路由和Wi-Fi探针是
智能路由与Wifi探针可以收集用户行为,同时可以收集用户MAC地址,还可以跟踪
【守望者 linux项目】mini WEB服务器设计
【守望者 linux项目】mini WEB服务器设
以下是曾经Watchmen一个朋友学习网络编程时设计的一个简单的MiniWEB服务器。
[守望者 算法视频]08_数据查找_hash算法
[守望者 算法视频]08_数据查找_hash算
守望者:普通逐个查找O(n),组织方式可以无序的数组或者普通链表。已经排序的
【守望者 linux项目】linux下的FTP服务器与客户端,作者 灯下野狐 ...
【守望者 linux项目】linux下的FTP服务
本项目是一个完整的FTP服务器及FTP客户端设计示例,对于需要学习网络编程项目
[守望者 linux视频]01_开发工具与开发平台
[守望者 linux视频]01_开发工具与开发
本课主要介绍gcc,gdb等系列开发工具,开始编写程序之旅。要求理解Linux开发平
【解读】什么样性格的人会被夸性格好
【解读】什么样性格的人会被夸性格好
守望者:性格决定命令。好的性格意识着给别人面子,能接受别人装逼,而且以上

行业聚焦  面试交流  职位推荐  开发视频   技术交流  腾讯微博  新浪微博

友情链接:课课家教育  阿里云  鲜果  W3Cfuns前端网  中国企业家  环球企业家  投资界  传媒梦工场  MSN中文网  Android开发者社区  cnbeta  投资中国网  又拍云存储  美通说传播  IT茶馆  网商在线  商业评论网  TechOrange  IT时代周刊  3W创新传媒  开源中国社区  二维工坊  Iconfans  推酷  智能电视网  FreeBuf黑客与极客  财经网  DoNews  凤凰财经  新财富  eoe移动开发者社区  i黑马  网易科技  新浪科技  搜狐IT  创业家  创业邦  腾讯财经  福布斯中文网  天下网商  TechWeb  雷锋网  新浪创业  和讯科技  品途O2O  极客公园  艾瑞网  抽屉新热榜  卖家网  人民网通信频道  拉勾网  创新派  简单云主机  

手机版|黑名单|守望者在线 在线教育 linux 高级程序设计 C/C++ 大数据 ( 蜀ICP备14029946号

成都守望者科技有限公司 © 2013-2016 All Rights Reserved