JAVA_SE复习(多线程)
线程
1.两种创建线程的方式都有自身的优点。
实现 Runnable 接口的优点:
从面向对象的设计观点看,Thread 类严格来讲是一个虚拟CPU 的封装,因此只有要改变或扩展该CPU 模型的行为时才应该继承这个类。
继承Thread 的优点是:代码会得到简化。
继承Thread 的缺点是:Java 只允许单继承,如果已经继承了Thread 类,则不能再继承其他类例如JFrame,这使得一些情况下不得不采用实现Runnable 的方法。
2.线程的优先级
默认情况下,线程的优先级是5 也就是Thread.NORM_PRIORITY。值得注意的是,即使当您为一个线程(线程A)指定最高优先级,另一个线程(线程B)指定最低优先级,运行程序的时候,线程A 也不是一定优先于线程B 执行的。线程的优先级只是表明在相同情况下,优先级高的线程有更大的几率抢占CPU。
3. 线程的基本控制
A.sleep
a.sleep 方法使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有synchronized 同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常。
b.即使当一个线程设置为最高优先级,当它调用sleep 会终止一段时间,低优先级的线程反而有机会先执行:
4.多线程的两种使用方式:
A.使用Runnable
构建一个Runnerable接口的实现类,类中实现它的run方法
再new一个thread对象 将runnerable对象作为参数放入其中
最后,thread对象.star();
B. 使用thread
构建一个thread的继承类,类中实现它的run方法
然后,利用多态性:Thread t1 = new MyThread1();
最后,thread对象.star();【t1.star()】
5. join 方法
执行join方法的线程必须全部都运行玩才能运行其他的线程。
join 方法使调用该方法的线程在此之前执行完毕,也就是等待调用该方法的线程 执行完毕后再往下继续执行。注意该方法也要捕获异常。
JAVA_SE复习(多线程)的更多相关文章
- java复习-多线程
和线程之间的关系: 进程:进程是程序的一次动态执行过程,他经理了代码加载,执行到执行完毕的一个完整过程,这个过程也是进程本身从产生,发展到最终消亡的过程. 线程:线程是实现并发机制的一种有效手段,进程 ...
- [Java复习] 多线程&并发 知识点补充
0. wait/notify/notifyAll的理解? wait:让持有该对象锁的线程等待: notify: 唤醒任何一个持有该对象锁的线程: notifyAll: 唤醒所有持有该对象锁的线程: 它 ...
- [Java复习] 多线程 Multithreading
Q1多线程基础 进程和线程? 进程: 1. 一段程序执行过程,动态的,相对而言程序是静态的.(与类和对象的关系类似) 2. CPU资源分配最小单元,包括CPU调度和资源管理. 3. 一个进程可以有多个 ...
- 7.JAVA_SE复习(文件)
文件和流 1.什么是节点流和处理流 InputStream & OutputStream Reader & Writer 乃节点流, 前面加File之类的名词 的节点流 其余加动词的均 ...
- 6.JAVA_SE复习(集合)
集合 结构图: 总结: 1.集合中的元素都是对象(注意不是基本数据类型),基本数据类型要放入集合需要装箱. 2.set与list的主要区别在于set中不允许重复,而list(序列)中可以有重复对象. ...
- JAVA_SE复习(异常)
异常.调试和断言 一. 异常的分类 1. 可查异常 例: 2. 不可查异常 例:Runtime Exception 3. 异常的分类结构: 1. 不执行finally 子句的唯一情况是虚拟机关 ...
- JAVA_SE复习(OOP2)
面向对象编程(二) 一.static 关键字 静态属性 1.不能覆盖静态方法.要被覆盖的方法必须是非静态的.在继承链中具有相同方法名的两个静态方法是两个互相独立的类方法.调用子类的静态方法只是将父类的 ...
- JAVA_SE复习(Class)
一.面向对象程序设计(OOP) 1.面向对象的程序设计是程序开发的一种方法.它将对象作为程序的基本单元,将程序和 数据封装其中,以提高软件的重用性.灵活性和扩展性 2.三个特征: 封装:隐藏信息 继承 ...
- JAVA_SE复习(OOP1)
面向对象编程(一) 一.继承 1. 在类图表示中,使用一个分为三块的矩形表示一个类.矩形的第一块表示类名,第二块描述这个类的属性及属性的数据类型,第三块描述这个类的操作,也就是方法以及返回类型. ...
随机推荐
- Online Schema Upgrade in MySQL Galera Cluster using TOI Method
http://severalnines.com/blog/online-schema-upgrade-mysql-galera-cluster-using-toi-method As a fo ...
- eclipse中,把java函数代码折叠/展开
首先,在eclipse 中开启设置代码折叠功能 1. windows->perferences->General->Editors->Structured Text Edito ...
- 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "StdAfx.h"”? 右键选择该文件.cpp格式的->属性->预编译头,→ 不使用预编译 ...
- Android进阶笔记12:Manymo(在线安卓系统模拟器工具)
Manymo: 在线安卓系统模拟器工具是一款启动速度快,且在浏览器中就能运行流畅.你可以使用它来测试你的安卓应用,他最多能支持42种屏幕尺寸和系统版本. 长久以来,Android开发者面临的困境之一就 ...
- Virtualbox - 共享文件夹
在虚拟机中添加共享文件夹——比如主机中的/home/user/download,我想把download文件夹共享给虚拟机用. 步骤:1.在虚拟机中找个挂载的目录,比如 /mnt/d,没有就新建一个目录 ...
- java.lang.ClassNotFoundException: com.servlet.HandlesearchclassesServlet
错误的原因: 原来命名为Handlesearchclasses导致与系统预留字冲突, 导致servlet找不到,出现404错误, 因此该变类名和web.xml里面的配置文件即可.
- 使用addClass()设置自增类名
今天在翻阅JQuery API的时候发现,addClass()方法不仅可以添加类,同时可以调用回调函数. 代码如下: <body> <p>item1</p> < ...
- Linux 通过 load average 判断服务器负载情况
Linux中load average判断服务器负载情况 转载文章 http://www.111cn.net/sys/linux/56003.htm 写的比较详细,推荐看看.
- C#控制台程序 使用 Server.MapPath,
(1)添加引用 System.Web. (2)在类中填写 using System.Web 命名空间. (3)写法为: System.Web.HttpContext.Current.Server.Ma ...
- white-space:nowrap 的妙用
对于多个元素同在同一行的布局,如比较常见的是轮播.下面我将探讨这这一布局的做法: 首先约定html结果如下: div.row div.col div.col div.col ... 做法一: 设定di ...