码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA-多线程(整理)

时间:2014-09-28 12:11:41      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:style   color   io   os   使用   ar   java   sp   art   



优先级>1~10  


线程调度
OS:
抢占式>更高优先级的线程会取代当前运行的线程
非抢占式>即使存在更高优先的线程,也不会取代当前运行的线程
JVM:
绿色线程:最简单的线程处理模型.对os来说只有一个进程一个线程,因此
jvm必须维护该创建线程的原始信息等..


守护线程/非守护线程:
在创建线程的父线程死亡时,守护线程会自动结束,而非守护线程
则不会.


创建线程
实现Runnable接口 Thread类  ThreadGroup类


静态方法
int Thread.activeCount();返回当前线程所在的线程组中活动线程数目
Thread Thread.currentThread();返回当前线程
void Thread.sleep(long);


基本操作
1.设置daemon/non-daemon属性
setDaemon();设置是否为守护线程
2.启动
调用start()方法,系统回调run()方法
3.停止线程/挂起/恢复线程
stop()/suspend()/resume();
4.转让控制权给其他线程
yield()一般指让其他同优先级的线程获取cpu时间.
5.改变优先级
setPriority()
6.等待其他对象
obj.wait()
7.中断线程
interrupt()>发送中断线程的消息
isInterrupted()>不清空标志,该方法为对象方法;返回当前线程是否被中断
Thread.interrupted()>返回标志并清空,该标志表示当前线程是否被中断


同步 对象锁
线程分配CPU是异步的,线程的执行顺序也是不可预算的,当不同的线程访问共同的
资源,就会造成资源的不安全性,在底层中,每个线程访问资源时,只是访问了资源的
缓存值,不同的执行顺序导致了不同时间内缓存资源的不一致性.java提供了
synchronized关键字,当某个线程第一次访问该资源时,锁定资源,直至线程访问完毕,
其他线程才可以访问,当该线程在访问资源中被中断的时候,其他线程无法访问该资源.


object.wait();/object.notify();
这2个函数都必须在synchronized的代码块或者函数块里面使用.
当调用对象的wait方法时候,线程暂停,直至该对象的notify被调用,wait方法的后面的
代码才被执行.当该对象有多个wait方法被调用时,唤醒线程的方法会唤醒最早调用
wait的线程.系统同时还提供了notifyAll()方法以唤醒所有等待对象.

JAVA-多线程(整理)

标签:style   color   io   os   使用   ar   java   sp   art   

原文地址:http://blog.csdn.net/qq285016127/article/details/39637485

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!