线程调度和主线程以及创建多线程程序的第一种方式

线程调度和主线程以及创建多线程程序的第一种方式线程调度分时调度所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。抢占式调度优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。设置线程优先级抢占式调度详解大部分操作系统都支持多进程并发运行,现在的操作系

大家好,欢迎来到IT知识分享网。

线程调度

分时调度

  所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。

抢占式调度

  优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性), Java使用的为抢占式调度。

设置线程优先级

线程调度和主线程以及创建多线程程序的第一种方式

 

 

抢占式调度详解

大部分操作系统都支持多进程并发运行,现在的操作系统几乎都支持同时运行多个程序。

比如∶现在我们上课一边使用编辑器,一边使用录屏软件,同时还开着画图板,dos窗口等软件。

此时,这些程序是在同时运行,”感觉这些软件好像在同一时刻运行着”。

实际上,CPU(中央处理器)使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核而言,某个时刻,只能执行一个线程,

而CPU的在多个线程间切换速度相对我们的感觉要快,看上去就是在同一时刻运行。

其实,多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的使用率更高。

 

 

 

 

主线程

主线程:执行主方法(main)的线程
单线程程序:java程序中只有一个线程
执行从main方法开始,从上到下依次执行
public class Person {
    private String name;

    public void run(){
        for (int i = 0; i < 20; i++) {
            System.out.println(name+"-->"+i);
        }
    }
    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Demo01MyThread {
    public static void main(String[] args) {
        Person p1 = new Person("张三");
        p1.run();
        Person p2 = new Person("李四");
        p2.run();
    }
}
 

线程调度和主线程以及创建多线程程序的第一种方式

 

 

 

 

 

 

 

 

创建多线程程序的第一种方式_创建Thread类的子类

Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。

每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。

Java使用线程执行体来代表这段程序流。

创建多线程程序的第一种方式:创建Thread类的子类

 java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类
实现步骤:
1.创建一个Thread类的子类
2.在Thread类的子类中重写Thread类中的run方法,设器线程任务(开启线程要做什么?)
3.创建Thread类的子类对象
4.调用Thread类中的方法start方法,开启新的线程,执行run方法
void start() 是该线程开始执行,java虚拟机调用该线程的run方法
结果是两个线程并发地运行;当前线程(main线程)和另一个线程(创建的新线程,执行其run方法)。
多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
java程序属于抢占式调度,哪个线程的优先级高,哪个线程优先执行;同一个优先级,随机选择一个执行
//1.创建一个Thread类的子类
class MyTread extends Thread{
    //2.在Thread类的子类中重写Thread类中的run方法,设器线程任务(开启线程要做什么?)
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("run:"+i);
        }
    }
}
public class Demo01Thread {
    public static void main(String[] args) {
        //3.创建Thread类的子类对象
        MyTread mt = new MyTread();
        //4.调用Thread类中的方法start方法,开启新的线程,执行run方法
        mt.start();
        for (int i = 0; i < 10; i++) {
            System.out.println("main:"+i);
        }
    }
}

运行结果:
线程调度和主线程以及创建多线程程序的第一种方式

 

   

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/28024.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信