首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java学习之java高级

Java学习之java高级

作者头像
用户8447427
发布2022-08-18 16:18:31
发布2022-08-18 16:18:31
5230
举报
文章被收录于专栏:userlyz学习记录userlyz学习记录

[TOC]

多线程

通过继承Thread类来实现多线程

不能直接调用线程中的run()方法,要调用线程的start()函数,才能实现多线程

一个线程只能启动一次,要不然就会报错误IllegalThreadStateException();

实例:

代码语言:javascript
复制
class MyThread extends Thread{
    private String title;
    public MyThread(String title){
        this.title=title;
    }

    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println(this.title+"i的值是"+i);
        }
    }
}

基于Runable接口实现多线程

代码语言:javascript
复制
Thread runable1=new Thread(new MyThread_R("线程R1"));
runable1.start();

利用lambda表达式来创建线程,在以后的开发对于多线程的实现,优先考虑的就是Runable接口的实现,

代码语言:javascript
复制
for(int x=0;x<3;x++){
    String title="线程对象-"+x;
    new Thread(()->{
        for(int y=0;y<10;y++){
            System.out.println( title+"lambda表达式"+y);
        }
    }).start();
}

Thread与Runable关系

使用Runable是最方便的,可以避免单继承的局限,也可以更好的对功能进行扩充

但是从结构上来看,之前继承Thread的时候,还是实现Runable接口中的run()方法

通过 Thread 类的构造方法传递了一个 Runnable 接口对象的时候,那么该接口对象将被 Thread 类中的 target 属性所保存,在 start() 方法执行的时候会调用Thread类中的 run() 方法,而这个 run() 方法去调用 Runnable 接口子类被覆写过的 run() 方法。

多线程开发的本质上是多个线程可以进行同一资源的抢占

代码语言:javascript
复制
public class Thread implements Runnable 

多线程开发

Callable接口实现多线程

Runable接口有一个问题,就是线程结束之后无法获取一个返回值,jdk1.5之后就提出了java.util.concurrent.Callable,就解决了这一问题

Callable定义的时候可以设置一个泛型,此泛型的类型就是返回数据的类型,这样的好处就是 可以避免一些安全隐患

重点

Runable和Callable的区别

1、Runable是在jdk1.0的时候提出的多线程的实现接口,而Callable实在jdk1.5之后提出的

2、java.long.Runable接口中只提供了一个run()方法,并且没有返回值,就无法判断该线程是否已经结束

3、java.util.concurrent.Callable接口提供了call()方法,可以有返回值

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多线程
    • 通过继承Thread类来实现多线程
    • 基于Runable接口实现多线程
    • Thread与Runable关系
    • 多线程开发
    • Callable接口实现多线程
  • 重点
    • Runable和Callable的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档