java之多线程(基础)

1.交替执行还是一直占有cpu?

多个任务轮流获得cpu的使用权,比如让浏览器执行0.001秒,让QQ执行0.001秒,再让音乐播放器执行0.001秒

虽然实际上是轮流地(即某一个时刻只能有一个任务使用cpu)但是,由于一个任务失去cpu使用权之后只需等待很短地一段时间就又会再次获得cpu使用权,所以在外人看来,好像这个任务在一直拥有cpu的使用权

2.进程和线程

一个任务就是一个进程,浏览器就是一个进程,视频播放器是另一个进程,音乐播放器和Word也是进程

某些进程内部还需要同时执行多个子任务。例如,我们在使用Word时,Word可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行打印,我们把子任务称为线程

个进程可以包含一个或多个线程,但至少会有一个线程

3.java程序启动实际上时启动了一个JVM进程,在这个JVM进程里先启动主线程main()方法,然后在main方法中,可以启动其他线程

4.创建一个线程 

方式一:继承Thread类法

class MyThread extends Thread
{
    @Override
    public void run()
    {
        System.out.println("HelloWorld!");
    }
}


public class demo
{
    public static void main(String[] args)
    {
       //创建一个线程对象
        Thread test=new MyThread();

       //启动新线程
       test.start();
       //执行start()方法的时候会自动调用run()方法

      //输出得到:HelloWorld!
    }
}

方式二:实现Runnable接口法

class MyRunnable implements Runnable
{
    @Override
    public void run()
    {
        System.out.println("HelloWorld!");
    }
}


public class demo
{
    public static void main(String[] args)
    {
       //创建一个线程对象
        Thread test=new Thread(new MyRunnable());

       //启动新线程
       test.start();
    }
}

由于java中类必须单继承,所以如果用第一种方式创建线程,那这个类就无法再继承其他类了,因此方式二是一种更常用的创建方式

5.当存在两个线程:主线程和另一个我们自己创建的进程的时候,语句执行顺序问题

下面的程序总共有四条输出语句:我们分别给它们编号①②③④,这四条语句到底执行顺序是怎么样的呢?一定是①②③④吗?有没有可能是①④②③

class MyThread extends Thread
{
    @Override
    public void run()
    {
        //第二条语句:2
        System.out.println("我们自己创建的线程开始运行");
        //第三条语句:3
        System.out.println("我们自己创建的线程结束运行");
    }
}


public class demo
{
    public static void main(String[] args)
    {
        //第一条语句:1
        System.out.println("主线程开始运行");
        
        Thread test=new MyThread();

        
        test.start();
        
        
        //第四条语句:4
        System.out.println("主线程结束运行");
    }
}

这份代码,先是启动了主线程,执行 System.out.println("主线程开始运行");

然后执行到test.start()这条语句的时候,启动了我们自己的线程(那么此时就是两个线程同时都在运行)

我们可以确定的是对于主线程而言:一定是先运行语句①,再运行语句④

对于我们自己创建的线程而言:一定是先运行语句②,再运行语句③

但是语句④到底是在语句②之前,还是在语句②和语句③之间,还是语句③之后无法确定,都有可能

猜你喜欢

转载自blog.csdn.net/weixin_47414034/article/details/125381140