Java中的每段代码都是从Thread
的一个实例中执行的。
如果您不写自己的线程,则所有内容都将由java-main-thread
执行。
当Java虚拟机启动时,通常会有一个非守护线程(通常会调用某个指定类的main方法)。 (从Thread了Java API)
但是您可以使用多个Thread
正穿过你的项目,使多线程和并行技术的使用你的机器上。
方法setPriority
可以用来给你调用这个方法的当前线程对象一个优先级。线程调度程序使用您的操作系统的优先级来根据它们的优先级为线程提供CPU时间。因此,具有更高优先级的线程比具有更小优先级的线程更可能获得CPU时间。
同样,如果你不使用任何自制线程,你确实使用java-main-thread
。您始终可以通过使用Thread.getCurrentThread()
访问当前的线程。
所以,如果你有自己的Thread类MyOwnThread extends Thread
,写这样的事:
MyOwnThread myOwnThread = new MyOwnThread();
myOwnThread.setPriority(...);
的myOwnThread
的优先级的影响。但如果你写这样的东西:
public static void main(String[] args) {
...
Thread.getCurrentThread().setPriority(...);
...
}
您正在影响java-main-thread
。
我的意思是,如果在main()中实例化一个Thread对象,然后在该对象上调用setPriority(),哪个优先级会改变,我创建的线程还是main()的? – Searcherer
优先级是在线程对象上调用'setPriority'时设置的整数值。它是一个实例方法,所以它影响它所调用的对象。我已经为你编辑了我的答案。 –
Thx。所以,正如我上面评论的那样,我在网页上看到的内容似乎是错误的......。 – Searcherer