一些常见问题
1、线程的名字,一个运行中的线程总是有名字的,名字有两个来源,一个是虚拟机自己给的名
字,一个是你自己的定的名字。在没有指定线程名字的情况下,虚拟机总会为线程指定名字,并
且主线程的名字总是 mian,非主线程的名字不确定。
2、线程都可以设置名字,也可以获取线程的名字,连主线程也不例外。
3、获取当前线程的对象的方法是:Thread.currentThread();
4、在上面的代码中,只能保证:每个线程都将启动,每个线程都将运行直到完成。一系列线程
以某种顺序启动并不意味着将按该顺序执行。 对于任何一组启动的线程来说, 调度程序不能保证
其执行次序,持续时间也无法保证。
5、当线程目标 run()方法结束时该线程完成。
6、一旦线程启动,它就永远不能再重新启动。只有一个新的线程可以被启动,并且只能一次。
一个可运行的线程或死线程可以被重新启动。
7、线程的调度是 JVM 的一部分,在一个 CPU 的机器上上,实际上一次只能运行一个线程。一
次只有一个线程栈执行。JVM 线程调度程序决定实际运行哪个处于可运行状态的线程。
众多可运行线程中的某一个会被选中做为当前线程。可运行线程被选择运行的顺序是没有保障
的。
8、尽管通常采用队列形式,但这是没有保障的。队列形式是指当一个线程完成“一轮”时,它移
到可运行队列的尾部等待,直到它最终排队到该队列的前端为止,它才能被再次选中。事实上,
我们把它称为可运行池而不是一个可运行队列, 目的是帮助认识线程并不都是以某种有保障的顺
序排列唱呢个一个队列的事实。
9、尽管我们没有无法控制线程调度程序,但可以通过别的方式来影响线程调度的方式。
|