首页 > 编程语言 >Java创建线程

Java创建线程

时间:2022-11-05 11:33:47浏览次数:43  
标签:Java ser 创建 myTread 线程 new public

线程创建:Thread Runnabel Callable

Tread class

  • 自定义线程类继承Tread类

  • 重写run()方法,编写线程执行体

  • 创建线程对象,调用start()方法启动线程

public class myTread extends Thread{
    @Override
    public void run() {
        System.out.println("子线程开启");
    }

    public static void main(String[] args) {
        myTread tread = new myTread();
        tread.start();
    }
}

注意:线程创建不一定立即执行,cpu自行调度

Runnable接口

  • 定义类实现Runnable接口
  • 实现run()方法,编写线程执行体
  • 创建线程对象,调用start()执行线程
public class myTread implements Runnable{
    public void run() {
        System.out.println("子线程开启");
    }

    public static void main(String[] args) {
      new Thread(new myTread()).start();//匿名内部类
    }
}

注意:推荐使用Runnable对象,因为java单继承的局限性,方便一个对象被多个线程使用

Callable接口

  • 实现Callable接口,需要返回值类型

  • 重写call方法,需要抛出异常

  • 创建目标对象

  • 创建执行服务:ExecutorService ser = Executors.newFixedThreadPoll(1);

  • 提交执行:Future result1 = ser.submit(t1);

  • 获取结果:boolean r1 = result1.get();

  • 关闭服务:ser.shutdownNow();

public class myTread implements Callable<Boolean> {
    //重写call方法
    @Override
    public Boolean call() throws Exception {
        System.out.println(Thread.currentThread().getName()+"->启动了");
        return true;
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //创建对象
        myTread t1 = new myTread();
        myTread t2 = new myTread();
        myTread t3 = new myTread();

        //创建服务
        ExecutorService ser = Executors.newFixedThreadPool(3);
        //提交执行 同start()
        Future<Boolean> r1 = ser.submit(t1);
        Future<Boolean> r2 = ser.submit(t2);
        Future<Boolean> r3 = ser.submit(t3);
        //获取结果
        boolean res1 = r1.get();
        boolean res2 = r2.get();
        boolean res3 = r3.get();

        //关闭服务
        ser.shutdownNow();
    }
}

标签:Java,ser,创建,myTread,线程,new,public
From: https://www.cnblogs.com/xiluoluo/p/16859859.html

相关文章

  • Java swing 连连看小游戏 开发小系统 项目源代码 实训实验毕设
    Javaswing连连看小游戏开发小系统项目源代码实训实验能满足学习和二次开发可以作为初学者熟悉Java的学习,作为老师阶段性学习的一个成功检验不再是单调的理解老师空泛......
  • C#之跨线程访问控件属性
    在窗体设计中,会经常遇到跨线程访问窗体控件,如果直接访问会报错,那怎么办呢?直接上代码代码为一个类,实际运用的时候直接实例化调用即可  1classCrossThreadUp......
  • Python 爬虫之多线程
    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、......
  • Java安装
    1、浏览器搜索https://www.oracle.com/java/technologies/downloads/2、3、......
  • JavaSE—变量的作用域和初始化
    一、变量的作用域变量被定义为只在某个程序块内或只在方法体内部有效,这种类型的变量通常被称为“局部变量”。局部变量的作用范围有效,只在相应的方法体或程序块内有效,超出......
  • JavaScript数组的reduce()方法
    参考文章:Array.prototype.reduce()——MDN一、介绍reduce()方法对数组中的每个元素按顺序执行一个由您提供的reducer函数,每一次运行reducer都会将先前元素的......
  • JavaWeb 学习心得体会
    javaweb学习心得时光转瞬即逝,一个学期的javaweb课程完美结束了。我学到了很多知识,例如:Web应用的基本概念与系统架构,JSP编程技术及WebJDBC数据库开发技术等等......
  • JAVA语言学习-面向对象(1)
    类与对象类类是JAVA语言中重要的复合型数据类型()。类的实现包括两个部分:成员变量和成员方法("方法"可以看作是C语言中的函数)类的声明要使用类,首先得对其声明。声明......
  • 原生javascript点击获取table表格数据
    1.ajax获取List数据xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4&&xmlHttp.status==200){letreturnVal......
  • python 文件写入/创建
    写入已有的文件如果需要写入已有的文件夹,必须向open()函数加参数,这里介绍两种参数a--追加----会追加到文件的末尾w--写入----会覆盖任何已有的内容 打开文......