读书人

java多线程小结(二)

发布时间: 2012-09-28 00:03:35 作者: rapoo

java多线程总结(二)

线程一般有6个状态:

新建状态:NEW

可运行状态:RUNNABLE

休眠状态:TIMED_WAITING

等待状态:WAITING

阻塞状态:BLOCKED

终止状态“TERMINATED

当我们使用new创建线程之后,线程处于新建状态,当调用start方法之后,线程出于可运行状态,当线程需要获得对象的内置锁,而这个锁被其他线程所占用的时候,线程就出于阻塞状态,当线程等待其他线程通知调度表可以运行时,线程处于等待状态,当一个含有时间参数的方法,必须sleep()方法,可以让线程处于计时等待状态,当run()方法运行完毕或者出现异常,线程处于终止状态。


线程的插队

在编写多线程的程序的时候,经常会遇到让一个线程优先于另外i个线程运行的情况,此时,除了设置这个线程的优先级高(不推荐这种方法)之外,更加直接的办法是采用Thread类中的join()方法。当插队的线程运行结束之后,其他的线程才能运行。


案例说两侧不能出现一样余额的。

代码如下:


可以发现,每个线程完成修改之后的副本是完全独立的,如果使用TreadLocal来管理变量,则每个使用这个变量的线程都会获得这个变量的一个副本。,并且可以随意修改这个副本,每个线程之间不会影响。

TreadLocal和同步机制都是为了解决多线程中的相同变量访问冲突的问题的,前者采用的是空间还时间,后者采用的是时间换空间

代码如下:


程序代码如下:


使用原子变量实现线程同步


原文链接:http://www.cnblogs.com/rollenholt/archive/2011/09/15/2178030.html


读书人网 >编程

热点推荐