Java 杂谈Java学习笔记技术干货

Java 并发编程(一)多线程基础

2017-05-25  本文已影响99人  爱迪生玛玛

注意

以下内容源自互联网相关资料及本人学习与工作经验,仅为学习及技术分享所用,切勿用于商业用途,转载请注明出处。

1. 进程与线程

软件开发的初学者经常搞不清楚这两个概念的区别

2. 多线程的运行原理

当我们的程序启动多个线程去完成一个任务时,比如启动多个线程,并发下载文件。感觉上这些线程是在同时运行的,但事实上并非如此。线程的运行是与CPU息息相关的。CPU是负责计算的电脑核心组件,也就是说只有得到CPU资源,我们的线程才能够执行。假设我们的电脑只有一个CPU,那么很明显,多线程必须去竞争这个CPU,谁得到CPU时间片,谁会可以执行,然后时间片用完,暂停执行,再次竞争,依此循环。由于CPU切换任务时间太快,肉眼无法区别,就造成了多线程同时运行的假象。

3. Java中实现线程的两种方式

3.1 继承Thread

创建一个新的类继承Thread类,重载run方法,run方法中是具体的调用逻辑。启动线程时,只需要调用new方法构建一个该线程类的对象,然后调用start方法就可以启动了。启动后的线程是独立于主线程的。代码如下:

public class MyThreadWithExtends extends Thread {
    @Override
    public void run() {
        System.out.println("使用继承Thread方式启动线程");
        
    }

    public static void main(String[] args) {
        Thread thread1 = new MyThreadWithExtends("a");
        thread1.start();
    }
}

注意调用Thread对象的run方法和start方法的区别:
调用run方法,则只是一个普通的方法调用,不会开启新的线程,还是运行在主线程中。

3.2 实现Runnable接口

创建一个新的类实现Runnable接口,实现run方法,启动线程时,调用new Thread(Runnable r)构建一个线程类对象,调用start方法启动。代码如下:

public class MyThreadWithImpliment implements Runnable {
    
    @Override
    public void run() {
        System.out.println("使用实现Runnable方式启动线程");
    }

    public static void main(String[] args) {
        Thread thread1 = new Thread(new MyThreadWithImpliment(), "thread-1");
        // 可指定线程名为thread-1
                thread1.start();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读