首页 > 编程语言 >java 创建线程的三种方法(Thread,Runnable,Callable)ExecutorService

java 创建线程的三种方法(Thread,Runnable,Callable)ExecutorService

时间:2024-11-18 23:11:17浏览次数:1  
标签:Runnable java service Thread void 线程 new public

1.继承Thread类
2.实现Runnable接口
3.实现Callable接口
4.线程池

1.继承Thread类
package com.chen;

// 创建线程的方式:继承Thread,重写run(),调用start()开启线程
// 注意,线程开启不一定立即执行,由cpu调度执行
public class TestThread2 extends Thread{
@Override
public void run(){
for (int i = 0; i <20 ; i++) {
System.out.println("submain"+i);
}
}

public static void main(String[] args) {
    TestThread2 t2=new TestThread2();
    t2.start();

    for (int i = 0; i <20 ; i++) {
        System.out.println("main"+i);
    }
}

}

2.实现Runnable接口
package com.chen;

// 创建线程的方式二:实现runnable,重新run(),执行线程需要丢入runable接口实现类调用start()
public class TestThread3 implements Runnable {
@Override
public void run(){
for (int i = 0; i <20 ; i++) {
System.out.println("submain"+i);
}
}
private String name;

public void TestThread3(String name){
    this.name=name;
}

public static void main(String[] args)
{
    TestThread3 t3=new TestThread3();
     new Thread(t3,"aa").start();
     new Thread(t3,"bb").start();
     new Thread(t3,"cc").start();

// main,submain交替执行
for (int i = 0; i <20 ; i++) {
System.out.println("main"+i);
}

}

}

3.实现Callable接口

4.线程池
package com.chen;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestPool {
public static void main(String[] args) {
// 创建服务,创建线程
// newFixedThreadPool 参数为线程池大小 10
ExecutorService service = Executors.newFixedThreadPool(10);

    // 执行
    service.execute(new MyThread());
    service.execute(new MyThread());
    service.execute(new MyThread());
    service.execute(new MyThread());

    // 关闭链接
    service.shutdown();
}

}

class MyThread implements Runnable{
@Override
public void run(){
System.out.println(Thread.currentThread().getName());
}
}

标签:Runnable,java,service,Thread,void,线程,new,public
From: https://www.cnblogs.com/chenshaojun2008/p/18553938

相关文章

  • [RoarCTF 2019]Easy Java
    打开链接映入眼帘的是一个登录窗口用admin'查看一下有没有注入漏洞,回显一直是wrongpassword这个界面到别处找找看有没有线索,我们点击help按钮看看发现有一个help.docx文件未找到报错,这里是get传参,我们试试post的传参,感觉也是比较神经下载到了一个help.docx文件,我们看看是......
  • javaWeb小白项目--学生宿舍管理系统
     目录一、检查并关闭占用端口的进程二、修改Tomcat的端口配置三、重新启动Tomcat一、javaw.exe的作用二、结束javaw.exe任务的影响三、如何判断是否可以结束 结尾: 这个错误提示表明在本地启动Tomcatv9.0服务器时遇到了问题,原因是所需的端口(8005、8080)已......
  • Java子类继承父类哪些内容 C语言初阶指针数组末
    1.publicclasstest18{/*publicstaticvoidmain(String[]args){Ziz1=newZi();Ziz2=newZi("zhangsan",15);}}classFu{Stringname;intage;publicFu(){}publicFu(Stringname,intage)......
  • JAVA反序列化学习-CommonsCollections2(基于ysoserial)
    环境准备JDK1.8(8u421)这里ysoserial,我以本地的JDK8版本为准、commons-collections4(4.0以ysoserial给的版本为准)、javassist(3.12.1.GA)cc4.0、ClassPool<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId&......
  • 读《Effective Java》笔记 - 条目3
    条目3:利用私有构造器或枚举类型强化Singleton属性Singleton是什么?是指只能实例化一次的类。Singleton通常用于表示无状态的对象,函数,或本质上唯一的系统组件。将一个类设计为Singleton会使其客户端测试变得十分困难,因为Singleton不能被继承,我们无法创建一个用来代替它的......
  • 【CUMT】《Java语言与网络编程》(张爱娟)部分课后简答题及答案参考
    chapter1.Java概述chapter2.基本程序设计chapter3.流程控制chapter4.面向对象与类chapter5.类的进阶设计chapter6.异常处理chapter7.常用类chapter9.线程与并发编程chapter11.网络编程chapter1.Java概述1.编写、运行Java程序的基本过程是怎样的?(1)在IDE中:用jav......
  • 数据结构java:插入排序
    插入排序插入排序基本思想:直接插入排序希尔排序(缩小增量排序)插入排序基本思想:直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序中,直到所有的记录插入完为止,得到一个新的有序序列。实际......
  • 基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现八
    一、前言介绍:免费学习:猿来入此1.1项目摘要随着人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。然而,宠物的数量增长也带来了一系列问题,如流浪宠物数量的增加、宠物健康管理的缺失以及宠物领养收养信息的不透明等。这些问题不仅影响了宠物的生存状况,也给社会带来了一定......
  • 基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现七
    一、前言介绍:免费学习:猿来入此1.1项目摘要随着人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。然而,宠物的数量增长也带来了一系列问题,如流浪宠物数量的增加、宠物健康管理的缺失以及宠物领养收养信息的不透明等。这些问题不仅影响了宠物的生存状况,也给社会带来了一定......
  • Java设计模式 —— Java七大设计原则详解
    文章目录前言一、单一职责原则1、概述2、案例演示二、接口隔离原则1、概述2、案例演示三、依赖倒转原则1、概述2、案例演示四、里氏替换原则1、概述2、案例演示五、开闭原则1、概述2、案例演示六、迪米特法则1、概述2、案例演示七、合成/聚合复用原则1、概述......