栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java多线程基础讲解(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java多线程基础讲解(一)

目录

前言

一、什么是多线程?

二、多线程的快速入门

三、多线程的三种创建方式

                1.继承Tread类

                2.实现Runnable接口

                3.实现Callable接口

四、多线程的常用方法




前言

        本文讲解了多线程的基础知识,针对java入门级别的读者,帮助其快速掌握并运用多线程。基础介绍帮助你快速了解多线程,快速入门帮你快速运用,处理较基础的问题,后面的篇章帮助你解决一些各种业务场景的需求,之后多线程的基础讲解系列二涉及了安全,同步,通信,线程池等知识。




一、多线程是什么?

在这里,文件的上传和下载是同时进行的,不同的文件下载是同时进行的,这就是多线程。

每个任务(无论相同还是不同)同时由一个进程进行处理就是多线程。 



二、多线程的快速入门



1.代码示例

代码如下(示例):

public class Test {
    public static void main(String[] args) {
        MyTread myTread = new MyTread();//创建MyTread的对象
        myTread.start();//调用start的方法
    }
}
class MyTread extends Thread{
    //重写run方法
    @Override
    public void run() {
        //线程的功能代码
        System.out.println("hello");
    }
}



2.步骤讲解
  1. 首先新建一个类,并继承Thread
  2. 重写run方法,在run方法里写线程的功能代码
  3. 在主类中创建对象
  4. 调用start方法
3.注意事项
  1. 新建的线程必须在mian方法的相应代码前。否则主线程代码跑完在跑新线程,无意义,等于一个线程跑。
  2. 主方法中必须调用start方法而不是run,调用run方法会跑实例方法,而不是开启一共线程跑run方法。
三、多线程的三种创建方式
三种方法的比较
方式优点缺点
继承Tread类简单无法继承其他类,无返回值
实现Runnable接口简单,可以继承其他类无返回值
实现Callable接口可以继承,有返回值代码较复杂

    1.继承Tread类
public class Test {
    public static void main(String[] args) {
        MyTread myTread = new MyTread();//创建MyTread的对象
        myTread.start();//调用start的方法
    }
}
class MyTread extends Thread{
    //重写run方法
    @Override
    public void run() {
        //线程的功能代码
        System.out.println("hello");
    }
}

    2.实现Runnable接口

1.第一种直接新建类实现Runnable的接口

public class Test {
    public static void main(String[] args) {
        Runnable runnable = new MyTread();//创建Runnacle的实例对象
        new Thread(runnable).start();//把任务对象传给Thread,调用start的方法
        //主线程功能代码
        System.out.println("main");
    }
}
//新建类实现Runnable接口
class MyTread implements Runnable{
    //重写run方法
    @Override
    public void run() {
        //线程的功能代码
        System.out.println("hello");
    }
}

2.第二种使用匿名内部类方法(强烈推荐)

public class Test {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                //这里写子线程的功能代码
                System.out.println("我是子线程");
            }
        }).start();//调用start的方法
        //主线程功能代码
        System.out.println("main");
    }
}

3.匿名内部类可以简化

public class Test {
    public static void main(String[] args) {
        new Thread(()->
                
                //这里写子线程的功能代码
                System.out.println("我是子线程")
        
        ).start();//调用start的方法
        //主线程功能代码
        System.out.println("main");
    }
}

    3.实现Callable接口
public class Test {
    public static void main(String[] args) throws Exception {
        FutureTask futureTask = new FutureTask(new MyTread());//创建一个Callable的实现类对象,通过FutureTask将该类封装成任务对象(实现Runnable)
        new Thread(futureTask).start();//将任务对象交给线程对象,调用start的方法
        //主线程功能代码
        System.out.println("main");
        //调用子线程返回值
        System.out.println(futureTask.get());//返回值使用FutureTask的get方法得到
    }
}
//新建类实现Callable接口 ,定义泛型,这里定义的是String
class MyTread implements Callable {
    @Override
    public String call() throws Exception {
        //功能代码
        return "我是子线程";//返回相应类型值
    }
}
 四、多线程的常用方法 (基础)
方法作用
String getName​()获取当前线程的名称,默认线程名称是Thread-索引
void setName​(String name)设置线程名称
public static Thread currentThread()返回对当前正在执行的线程对象的引用
public static void sleep(long time)让线程休眠指定的时间,单位为毫秒。
public void start()线程启动方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/671238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号