6月17日线程
来源:互联网 发布:网站seo 编辑:程序博客网 时间:2024/05/14 05:59
线程
1, 进程:一个运行中的程序就是进程,是操作系统分配CPU资源与内存资源的最小单位;其内存独立。
2, 线程:通过代码可以创建.销毁。进程内部可以拥有1个或多个线程,操作系统将资源分配给进程后,进程再将资源分配线程。是进程之上的多任务处理,可以认为进程是线程的容器。
Java SE程序一旦执行,至少会有一个主线程(执行main函数的线程)。除主线程外,Java虚拟机还会启动垃圾回收线程等其他线程。
3, 线程的创建
两种定义线程的方法:继承自Thread类或实现Runnable接口,然后覆盖run方法。
线程创建并运行后至少会经历就绪(Born,指为线程对象分配内存空间).执行(running,指线程正在执行run方法中的指令).销毁(terminated,run方法执行结束后线程即销毁)三个状态。
有的线程还会进入休眠.阻塞等状态。
public class Test extends Thread {
publicvoid run() {
System.out.println("a");
}
staticclass Test1 implementsRunnable{
@Override
publicvoid run() {
System.out.println("b");
}
}
publicstatic void main(String[] args) {
Testt = new Test();
t.start();
newThread(new Test1()).start();
}
}
4, 线程的休眠
Thread.sleep()方法可以将当前线程进入到休眠状态,线程休眠时会释放CPU资源,非常适合用来进行定时操作。
使用线程休眠的特点非常适合在Swing界面中进行动画处理。
5, 线程安全(synchronized):
一般线程安全都是由于访问共享资源所引起的。
共享资源可能是一个静态变量.随想的属性.或数据库连接。
同步锁:synchronized。在方法定义时加入synchronized修饰符即添加了同步锁,当多个线程准备同时调用该方法时,只有一个线程可以获取到同步锁,进行调用,其他线程会变为阻塞状态停止运行,直到该线程执行方法完毕退出后释放锁,其他线程会按刚才的规则再次竞争获取同步锁并执行。一般枷锁的方法称为同步方法。
6, 等待唤醒机制:涉及的方法:
wait:将同步中的线程处于冻结状态。释放了执行权,释放了资格。同时将线程对象存储到线程池中。
notify:唤醒线程池中某一个等待线程。
notifyAll:唤醒的是线程池中的所有线程。
7, wait和sleep区别: 分析这两个方法:从执行权和锁上来分析: wait:可以指定时间也可以不指定时间。不指定时间,只能由对应的notify或者notifyAll来唤醒。 sleep:必须指定时间,时间到自动从冻结状态转成运行状态(临时阻塞状态)。 wait:线程会释放执行权,而且线程会释放锁。 Sleep:线程会释放执行权,但不是不释放锁。
8, 线程的停止:通过stop方法就可以停止线程。但是这个方式过时了。
9, ---------<java.lang.Thread >----------
interrupt():中断线程。
setPriority(int newPriority):更改线程的优先级。
getPriority():返回线程的优先级。
toString():返回该线程的字符串表示形式,包括线程名称、优先级和线程组。
Thread.yield():
暂停当前正在执行的线程对象,并执行其他线程。 setDaemon(true):将该线程标记为守护线程或用户线程。将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。该方法必须在启动线程前调用。
join:临时加入一个线程的时候可以使用join方法。 当A线程执行到了B线程的join方式。A线程处于冻结状态,释放了执行权,B开始执行。A什么时候执行呢?只有当B线程运行结束后,A才从冻结状态恢复运行状态执行。
- 6月17日线程
- 6月17日流水账
- 7月27日-----正则表达式、线程
- 2009年6月17日星期三
- 2008年6月17日
- 2011年6月17日新知识
- 2009年6月17日
- 2009年6月17日
- 6月17日开发笔记
- 2015年6月17日-总结
- 3月17日
- 4月17日
- 11月17日
- 12月17日
- 1月17日
- 7月17日
- 9月17日
- 10月17日
- 分享WWDC 2013 Session各个视频 地址
- 定义一个宏,比较a,b两数的大小问题集合
- Java服务器的JSON数据包三重加密算法
- Block学习记录
- 多个生产者,多个消费者
- 6月17日线程
- oracle 11g PL/SQL Programming学习十七
- 6月18日IO流
- 13.android读取远程图片案例
- VC中INI文件的读写
- Android中使用手势Gesture实现图片放缩
- ARC学习记录
- Collection框架之Set和List
- UPNP sdk中ContentDirectory service中Browse方法解析