参考解答
一个程序中可以有多条执行线索同时执行,一个线程就是程序中的一条执行线索,每个线程上都关联有要执行的代码,即可以有多段程序代码同时运行,每个程序至少都有一个线程,即main方法执行的那个线程。如果只是一个cpu,它怎么能够同时执行多段程序呢?这是从宏观上来看的,cpu一会执行a线索,一会执行b线索,切换时间很快,给人的感觉是a,b在同时执行,好比大家在同一个办公室上网,只有一条链接到外部网线,其实,这条网线一会为a传数据,一会为b传数据,由于切换时间很短暂,所以,大家感觉都在同时上网。
状态:就绪,运行,synchronize阻塞,wait和sleep挂起,结束。wait必须在synchronized内部调用。
调用线程的start方法后线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状态,遇到synchronized语句时,由运行状态转为阻塞,当synchronized获得锁后,由阻塞转为运行,在这种情况可以调用wait方法转为挂起状态,当线程关联的代码执行完后,线程变为结束状态。
相似问题
同步和异步有何异同 在什么情况下分别使用他们?
同步和异步有何异同,在什么情况下分别使用他们?
什么时候用assert?
什么时候用assert?
两个对象值相同(x.equals(y) == true) 但却可有不同的hash code 这句话对
两个对象值相同(x equals(y) == true),但却可有不同的hash code,这句话对不对?
java中会存在内存泄漏吗?
java中会存在内存泄漏吗?
List Set Map是否继承自Collection接口?
List, Set, Map是否继承自Collection接口?
