天天看点

精通Java多线程学习(一)

1.概念

程序:是一系列指令的集合,是静态的。比如说我们的QQ、微信、网易云音乐等。

进程:程序运行后就会产生进程,每个进程在内存中都有一个独立的地址空间,是操作系统进行资源分配和调度的独立单元。进程之间可以并发执行。一个进程包含多个线程。

线程:是进程的一个实体,是cpu进行调度和分配的基本单位。由于线程比较小更容易进行并发,而且其中的一个线程死掉也不会导致整个进程的崩溃。

2.引入线程的思想。

多线程在现代互联网的应用非常广泛,如大型的电商网站、12306等对并发的要求都非常的高。

3.实现多线程

通常来说实现一个线程的方法有两种:继承Thread和实现Runnable接口

下面就是一个继承Thread类的线程。

public class ThreadDemo1 extends Thread{
    private String name;
    ThreadDemo1(String name){
        this.name = name;
    }
    @Override
    public void run() {
        for (int i = 0; i < 60; i++) {
            System.out.println(name+"继承Thread线程运行:"+i);
        }
    }
}
           

对这个类进行测试:

public class Test {
    public static void main(String[] args){
       ThreadDemo1 demo1 = new ThreadDemo1("one");
        ThreadDemo1 demo2 = new ThreadDemo1("two");
        demo1.start();
        demo2.start();
       }
    }
}
           

可以看到程序会随机的输出两个线程的打印结果。两个线程的输出顺序是不确定的。

精通Java多线程学习(一)

为什么会出现这种情况呢?

因为线程的运行是由cpu进行调度的,一个cpu在同一时间只能运行一个线程(单核cpu),之所以我们看到很多程序同时在运行是因为cpu在做很快的切换操作。cpu调到了谁就执行谁。

继续阅读