作者在 2010-05-23 20:36:14 发布以下内容
线程总复习
创建 线程方式
(1)继承Thread(2)实现Runnable
注意: 在类中要重写run()方法
启动线程
第一种直可以实例化线程类用start()启动
第二种也要实例线程类。之后在构建一个Thread实例,将线程实例名作为Thread的参数
参考实例:http://hi.bccn.net/space-447825-do-blog-id-17017.html
Thread的相关方法
isDaemon()测试该线程是否为守护线程(后台线程)
setDaemont()设置为守护线程线程
后台线程:当主线或用户线程执行完了之后,后台线程也自动结束(缺省是用户线程)
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17018.html
currentThread()返回对当前正在执行的线程对象的引用。
activeCount() 返回当前线程的线程组中活动线程的数目。
int enumerate(Thread[] tarray) 将当前线程的线程组及其子组中的每一个活动线程复制到指定的数组中。
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17019.html
线程的生命周期
创建(start)————>就绪-->执行(run)-->结束
创建-->就绪————>执行-->堵塞——>就绪————>执行结束
线程优先级
1最低,10最高,默认的是5;高优先级的线程运行完了之后,才能轮到下一级线程执行(开发中不提倡这种控制)
子线程的优先级和父类的优先级一样
getPriority() 返回线程的优先级。
setPriority(int newPriority) 更改线程的优先级。
线程的串行化
在多线程中,如果在一个线程运行的过程中要用到另一个纯种的运行结果,则可进行进行的串型化处理
join()等待该线程终止。
join(long millis) 等待该线程终止的时间最长为 millis 毫秒。
join(long millis, int nanos) 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒
参考实例:http://hi.bccn.net/space-447825-do-blog-id-17021.html
线程让步
让运行中线程主动放弃当前获得的CPU处理机会,但不是使该纯种阻塞,而是使之转为就绪
yield() 暂停当前正在执行的线程对象,并执行其他线程。
参考实例:http://hi.bccn.net/space-447825-do-blog-id-17023.html
线程的挂起和恢复
挂起:暂时停止当前运行中的线程,使之转入阻塞状态,并且不会自动恢复运行
恢复:使得一个已挂起的纯种恢复运行
suspend()让一个线程挂起(现已过时)
resume() 恢复一个挂起纯种(现已过时)
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17024.html
互斥锁
来保共享数据操作的完整性
每个对象都对应一个互斥锁的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象
关键字 synchronized来与对象的互斥锁联系,在某个对象用synchronized修饰
synchronized在方法的应用(同步方法)
synchronized(Object)在方法中的应用(同步语句步)
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17025.html
线程的死锁
并发运行的多个线程问彼此等待,都无法运行的状态
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17027.html
线程同步通信
为了在线程进入阻塞状态时应尽量释放其锁定的资源,以为其他的线程提供运行的机会
wait()让当前阻塞
notify()唤醒阻塞的一个线程
notifyAll() 唤醒所有阻塞的线程
参考实例http://hi.bccn.net/space-447825-do-blog-id-17028.html
创建 线程方式
(1)继承Thread(2)实现Runnable
注意: 在类中要重写run()方法
启动线程
第一种直可以实例化线程类用start()启动
第二种也要实例线程类。之后在构建一个Thread实例,将线程实例名作为Thread的参数
参考实例:http://hi.bccn.net/space-447825-do-blog-id-17017.html
Thread的相关方法
isDaemon()测试该线程是否为守护线程(后台线程)
setDaemont()设置为守护线程线程
后台线程:当主线或用户线程执行完了之后,后台线程也自动结束(缺省是用户线程)
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17018.html
currentThread()返回对当前正在执行的线程对象的引用。
activeCount() 返回当前线程的线程组中活动线程的数目。
int enumerate(Thread[] tarray) 将当前线程的线程组及其子组中的每一个活动线程复制到指定的数组中。
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17019.html
线程的生命周期
创建(start)————>就绪-->执行(run)-->结束
创建-->就绪————>执行-->堵塞——>就绪————>执行结束
线程优先级
1最低,10最高,默认的是5;高优先级的线程运行完了之后,才能轮到下一级线程执行(开发中不提倡这种控制)
子线程的优先级和父类的优先级一样
getPriority() 返回线程的优先级。
setPriority(int newPriority) 更改线程的优先级。
线程的串行化
在多线程中,如果在一个线程运行的过程中要用到另一个纯种的运行结果,则可进行进行的串型化处理
join()等待该线程终止。
join(long millis) 等待该线程终止的时间最长为 millis 毫秒。
join(long millis, int nanos) 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒
参考实例:http://hi.bccn.net/space-447825-do-blog-id-17021.html
线程让步
让运行中线程主动放弃当前获得的CPU处理机会,但不是使该纯种阻塞,而是使之转为就绪
yield() 暂停当前正在执行的线程对象,并执行其他线程。
参考实例:http://hi.bccn.net/space-447825-do-blog-id-17023.html
线程的挂起和恢复
挂起:暂时停止当前运行中的线程,使之转入阻塞状态,并且不会自动恢复运行
恢复:使得一个已挂起的纯种恢复运行
suspend()让一个线程挂起(现已过时)
resume() 恢复一个挂起纯种(现已过时)
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17024.html
互斥锁
来保共享数据操作的完整性
每个对象都对应一个互斥锁的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象
关键字 synchronized来与对象的互斥锁联系,在某个对象用synchronized修饰
synchronized在方法的应用(同步方法)
synchronized(Object)在方法中的应用(同步语句步)
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17025.html
线程的死锁
并发运行的多个线程问彼此等待,都无法运行的状态
参考实例: http://hi.bccn.net/space-447825-do-blog-id-17027.html
线程同步通信
为了在线程进入阻塞状态时应尽量释放其锁定的资源,以为其他的线程提供运行的机会
wait()让当前阻塞
notify()唤醒阻塞的一个线程
notifyAll() 唤醒所有阻塞的线程
参考实例http://hi.bccn.net/space-447825-do-blog-id-17028.html