java线程的调度
⑴ java的多线程是OS调度还是JVM调度的呢
现在java线程和操作系统线程之间的对应关系有三种:
多对一、一对一、多对多
多对一就是所说的“Green thread”,一个java应用程序
被当作一个任务被操作系统调度,而这个java应用程序里
的多个线程则由虚拟机调度执行。也可以说由虚拟机选出
一个多线程java程序里的一个线程作为活动线程,这个线
程再作为操作系统的一个任务被操作系统调度。
一对一就是一个java线程对应一个操作系统线程了,即同
一个多线程java程序里的所有线程都由操作系统统一调度。
多对多还不是很明白。。。
⑵ java线程调度问题
给你一段代码:
在当前分钟为1时,执行线程,不等于1是中断线程。
import java.util.Calendar;
public class AAAAAAAA extends Thread {
public void run(){
Thread b = new B();
while( true ){
try {
Calendar cal = Calendar.getInstance();
int 分钟=cal.get( Calendar.MINUTE );
if( 分钟==1 ){
b.start();
}else{
b.interrupt();
}
Thread.sleep( 100 );
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
class B extends Thread{
public void run(){
System.out.println( "B 正在运行" );
}
public void interrupt(){
System.out.println( "B 被中断了" );
}
}
希望对你有帮助。
⑶ JAVA抢占式线程调度的问题
1线程的调度并不是由java决定的,而是os,os可以保证所有线程都有机会得到执行。即时某个线程正在忙。也会被休眠。具体的你要看os相关的线程调度这一块,这叫抢占式任务调度。
2即使线程t的优先级高,在调用start时,也不会保证线程已经真实的启动。os只是把他放到了线程队列中去排队。而当前线程继续执行。
⑷ java线程调度的策略是什么
时间片轮转 加 优先级
你可以这样试
在一个线程里死循环输出"1",
第二个输出"2"
......
然后设置他们的优先级,并且run.你可以看下屏幕上的输出结果
屏幕跳得很快,但你应该能看清楚优先级最高的那个数字...
⑸ 线程的调度分为几种模型,在java中是使用哪种调度模型
Java程序属于抢占式调度,哪个线程的优先级高,哪个线程抢到的CPU时间片的概率就高;如果两个线程同一个优先级,则CPU随机选择一个执行。
⑹ java 线程的调度是指创建了没运行吗
不是。是指如何安排线程的执行。
⑺ java线程调度
就绪状态是只要CPU有空闲随时都可以执行,处于就绪状态;
而阻塞状态是需要外界激活,可能是时间、可能是满足某一条件,他才能激活运行,就算CPU有空闲,也需要满足条件才会执行。
⑻ java几种线程调度
时间片轮转 加 优先级
你可以这样试
在一个线程里死循环输出"1",
第二个输出"2"
......
然后设置他们的优先级,并且run.你可以看下屏幕上的输出结果
屏幕跳得很快,但你应该能看清楚优先级最高的那个数字...
⑼ Java中线程调度遵循何种原则
同时进入看优先级谁高,相同优先级看操作系统如何调(有多种算法,系统先调谁不知道)
不同时进入需等前面线程阻塞或等待是进入运行状态
⑽ Java中多线程调度如何实现
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify