- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java多线程深入研究
1:多线程(理解)(1)多线程:一个应用程序有多条执行路径进程:正在执行的应用程序线程:进程的执行单元,执行路径单线程:一个应用程序只有一条执行路径多线程:一个应用程序有多条执行路径多进程的意义?提高CPU的使用率多线程的意义?提高应用程序的使用率(2)Java程序的运行原理及JVM的启动是多线程的吗?A:Java命令去启动JVM,JVM会启动一个进程,该进程会启动一个主线程。B:JVM的启动是多线程的,因为它最低有两个线程启动了,主线程和垃圾回收线程。(3)多线程的实现方案(自己补齐步骤及代码掌握)A:继承Thread类B:实现Runnable接口(4)线程的调度和优先级问题A:线程的调度a:分时调度b:抢占式调度 (Java采用的是该调度方式)B:获取和设置线程优先级a:默认是5b:范围是1-10(5)线程的控制(常见方法)A:休眠线程B:加入线程C:礼让线程D:后台线程E:终止线程(掌握)(6)线程的生命周期(参照线程生命周期图解.bmp)A:新建B:就绪C:运行D:阻塞E:死亡(7)电影院卖票程序的实现A:继承Thread类B:实现Runnable接口(8)电影院卖票程序出问题A:为了更符合真实的场景,加入了休眠100毫秒。B:卖票问题a:同票多次b:负数票(9)多线程安全问题的原因(也是我们以后判断一个程序是否有线程安全问题的依据)A:是否有多线程环境B:是否有共享数据C:是否有多条语句操作共享数据(10)同步解决线程安全问题A:同步代码块synchronized(对象) {需要被同步的代码;}这里的锁对象可以是任意对象。B:同步方法把同步加在方法上。这里的锁对象是thisC:静态同步方法把同步加在方法上。这里的锁对象是当前类的字节码文件对象(反射再讲字节码文件对象)(11)回顾以前的线程安全的类A:StringBufferB:VectorC:HashtableD:如何把一个线程不安全的集合类变成一个线程安全的集合类用Collections工具类的方法即可。1 进程与线程package cn.itcast_01;/* *进程: *正在运行的程序,是系统进行资源分配和调用的独立单位。 *每一个进程都有它自己的内存空间和系统资源。 *线程: *是进程中的单个顺序控制流,是一条执行路径 *一个进程如果只有一条执行路径,则称为单线程程序。 *一个进程如果有多条执行路径,则称为多线程程序。 * * 举例: * 扫雷程序,迅雷下载 * * 大家注意两个词汇的区别:并行和并发。 *前者是逻辑上同时发生,指在某一个时间内同时运行多个程序。 *后者是物理上同时发生,指在某一个时间点同时运行多个程序。 * * Java程序的运行原理: * 由java命令启动JVM,JVM启动就相当于启动了一个进程。 * 接着有该进程创建了一个主线程去调用main方法。 * * 思考题: * jvm虚拟机的启动是单线程的还是多线程的? * 多线程的。 * 原因是垃圾回收线程也要先启动,否则很容易会出现内存溢出。 * 现在的垃圾回收线程加上前面的主线程,最低启动了两个线程,所以,jvm的启动其实是多线程的。 */publicclassMyThreadDemo {publicstaticvoid main(String[] args) {System.out.println(hello);new Object();new Object();new Object();new Object();//...System.out.println(world);}}2 重写run()MyThread.javapackage cn.itcast_02;/* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的。 * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()用来包含那些被线程执行的代码。 */publicclassMyThreadextends Thread {@Overridepublicvoid run() {// 自己写代码// System.out.println(好好学习,天天向上);// 一般来说,被线程执行的代码肯定是比较耗时的。所以我们用循环改进for (intx = 0; x 200; x++) {System.out.println(x);}}}MyThreadDemo.javapackage cn.itcast_02;/* * 需求:我们要实现多线程的程序。 * 如何实现呢? * 由于线程是依赖进程而存在的,所以我们应该先创建一个进程出来。 * 而进程是由系统创建的,所以我们应该去调用系统功能创建一个进程。 * Java是不能直接调用系统功能的,所以,我们没有办
有哪些信誉好的足球投注网站
文档评论(0)