不要在构造函数中启动线程,特别是当线程将会回调初始线程的时候。
多个需要操作相同的共享资源集,要确保以相同的顺序请求这些资源
让各线程公平的使用CPU
blocked,
即使阻塞,依然持有已经拥有的锁
yield()
礼让CPU,资源还是占有的
sleep()
依然持有已经拥有的锁,给予其它线程运行机会。
interrupt()
其它线程可以调用该线程的interrupt()唤醒该线程,使其正常执行。
join()
连接两个线程,当Bthread需要Athread的执行结果时,Bthread调用Athread.join()
wait()
释放此对象的锁并暂停,直到得到其它线程的通知notify()。
一般将wait放在检查当前对象状态的while循环中。
①start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运行态(Runnable),什么时候运行是由操作系统决定的。
②Thread.sleep()方法调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留出一定时间给其他线程执行的机会(也就是靠内部自己协调)。
备注:sleep方法与wait方法的区别:
①sleep方法是静态方法,wait方法是非静态方法。
②sleep方法在时间到后会自己“醒来”,但wait不能,必须由其它线程通过notify(All)方法让它“醒来”
③sleep方法通常用在不需要等待资源情况下的阻塞,像等待线程、数据库连接的情况一般用wait
备注:sleep/wait与yeld方法的区别:
①调用sleep或wait方法后,线程即进入block状态,而调用yeld方法后,线程进入runnable状态
备注:wait与join方法的区别:
①wait方法体现了线程之间的互斥关系,而join方法体现了线程之间的同步关系
②wait方法必须由其它线程来解锁,而join方法不需要,只要被等待线程执行完毕,当前线程自动变为就绪
③join方法的一个用途就是让子线程在完成业务逻辑执行之前,主线程一直等待直到所有子线程执行完毕。
1、新建状态(New):
2、就绪状态(Runnable):
3、运行状态(Running):
4、阻塞状态(Blocked):
阻塞三态:等待池,锁池,其它阻塞态不放入池
5、死亡状态(Dead):
多线程编程的基础知识点
http://www.blogjava.net/pengpenglin/archive/2008/09/02/226292.html
Java多线程编程总结
http://lavasoft.blog.51cto.com/62575/27069
多个需要操作相同的共享资源集,要确保以相同的顺序请求这些资源
让各线程公平的使用CPU
blocked,
即使阻塞,依然持有已经拥有的锁
yield()
礼让CPU,资源还是占有的
sleep()
依然持有已经拥有的锁,给予其它线程运行机会。
interrupt()
其它线程可以调用该线程的interrupt()唤醒该线程,使其正常执行。
join()
连接两个线程,当Bthread需要Athread的执行结果时,Bthread调用Athread.join()
wait()
释放此对象的锁并暂停,直到得到其它线程的通知notify()。
一般将wait放在检查当前对象状态的while循环中。
wait是等待对象或资源达到某种状态,而join是等待一个线程结束。
①start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运行态(Runnable),什么时候运行是由操作系统决定的。
②Thread.sleep()方法调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留出一定时间给其他线程执行的机会(也就是靠内部自己协调)。
备注:sleep方法与wait方法的区别:
①sleep方法是静态方法,wait方法是非静态方法。
②sleep方法在时间到后会自己“醒来”,但wait不能,必须由其它线程通过notify(All)方法让它“醒来”
③sleep方法通常用在不需要等待资源情况下的阻塞,像等待线程、数据库连接的情况一般用wait
备注:sleep/wait与yeld方法的区别:
①调用sleep或wait方法后,线程即进入block状态,而调用yeld方法后,线程进入runnable状态
备注:wait与join方法的区别:
①wait方法体现了线程之间的互斥关系,而join方法体现了线程之间的同步关系
②wait方法必须由其它线程来解锁,而join方法不需要,只要被等待线程执行完毕,当前线程自动变为就绪
③join方法的一个用途就是让子线程在完成业务逻辑执行之前,主线程一直等待直到所有子线程执行完毕。
1、新建状态(New):
2、就绪状态(Runnable):
3、运行状态(Running):
4、阻塞状态(Blocked):
阻塞三态:等待池,锁池,其它阻塞态不放入池
5、死亡状态(Dead):
多线程编程的基础知识点
http://www.blogjava.net/pengpenglin/archive/2008/09/02/226292.html
Java多线程编程总结
http://lavasoft.blog.51cto.com/62575/27069