「java虚拟线程」java虚拟机线程
本篇文章给大家谈谈java虚拟线程,以及java虚拟机线程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 虚拟机线程与操作系统内核线程之间的关系
- 2、一般线程是指操作系统级别的线程,但是存在JAVA虚拟机级别的线程吗?
- 3、java虚拟机(jvm)如何实现多线程
- 4、java虚拟机能同时运行几个线程?
java 虚拟机线程与操作系统内核线程之间的关系
简单的讲,JVM的多线程通常是不依赖于操作系统来实现的,这一点在IBM的系统上更为常见。有些优化的JVM比如IBM的,就是使用了NativeThread机制,来达到更高的效率。
在单CPU上就能实现多线程,至于多CPU情况,要看操作系统对多CPU的支持了。
一般线程是指操作系统级别的线程,但是存在JAVA虚拟机级别的线程吗?
存在!
一般线程都是系统实现的,也就是说,在系统中有标识线程的数据结构,也就是TCB,这些线程的调度都是有操作系统管理的。
但是像Java虚拟机,或者其他的运行时库会提供自己的线程库,也就是自己实现了一个线程模型,这个对于操作系统是不可见,也就是操作系统不知道有这些线程存在,把他们当做一个完整的进程看待。这就说所谓的用户级别的线程,用户级别的线程的调度完全有创建线程的进程实现(其实就是库函数实现的)。但是进程还是受系统管理。
java虚拟机(jvm)如何实现多线程
启动一个线程用start()方法,使线程所代表的虚拟处理机处于可运行的状态,这意味着它可以有JVM(java虚拟机)来调度和执行,这并不意味着线程就会立即执行。run()方法可以产生必须退出的标志来停止一个线程。
java虚拟机能同时运行几个线程?
你应该知道一个cpu在同一时间只能运行一个线程(其他线程要么在等待,要么在休眠),jvm也一样.jvm理论上可以让足够多个线程交替运行,不信你试试下面的程序:
/*
* ThreadTest.java
*
* Created on 2006年9月12日, 下午10:58
*
*/
/**
*
* @author lanxiazhi
*/
public class ThreadTest extends Thread{
int id;
/** Creates a new instance of ThreadTest */
public ThreadTest(int id) {
this.id=id;
}
public void run(){
System.out.println("线程 "+id+" 开始.");
try {
sleep(3000+1000-id);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
for(int i=0;i100;i++){
System.out.println("线程 "+id+" 打印 "+i);
}
System.out.println("线程 "+id+" ...........中止");
}
public static void main(String[] args) {
for(int i=0;i1000;i++){
new ThreadTest(i+1).start();
}
}
}
java虚拟线程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java虚拟机线程、java虚拟线程的信息别忘了在本站进行查找喔。