首页 > 编程语言 >Java基础 线程池

Java基础 线程池

时间:2023-10-28 22:22:05浏览次数:32  
标签:Java 创建 基础 池子 任务 线程 提交 public

线程池 主要核心原理:

① 创建一个池子,池子中是空的

② 提交任务时,池子会创建新的线程对象来执行任务,当任务执行完毕,线程会还给池子,下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可

③ 但是如果提交任务时,池子中没有空闲线程,并且也无法创建新的线程的时候,任务就会排队等待

 

线程池 实现步骤:

① 创建线程池

Executors:线程池的工具类。通过这个工具类就可以调用方法,返回不同类型的线程池对象

public  static  ExecutorService  newCachedThreadPool ()   →   创建一个没有上限的线程池(上限是 int 类型的最大值)

public  static  ExecutorService  newFixedThreadPool (int  nThreads)   →   创建一个有上限的线程池

② 给线程池提交任务(提交任务时,线程池底层会创建线程或者复用已经存在的线程)

③ 所有的任务全部执行完毕,关闭线程池

 

代码示例:

public class MyRunnable implements Runnable {
@Override
public void run() {
//编写线程锁执行的代码
for (int i = 1; i <= 3; i++) {
System.out.println(Thread.currentThread().getName() + "---" + i);
}
}
}
-------------------------------------------------------------------------------------
public static void main(String[] args) throws Exception {
//获取线程池对象
ExecutorService pool1 = Executors.newCachedThreadPool();
//给线程池提交任务
pool1.submit(new MyRunnable());
//销毁线程池(一旦销毁线程池,它里面所有的线程也会消失)
pool1.shutdown();
}

标签:Java,创建,基础,池子,任务,线程,提交,public
From: https://www.cnblogs.com/gagaya2/p/17794779.html

相关文章

  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • javaweb--API详解-PreparedStatemen
    PreparedStatemen1、预编译SQL语句并执行,预防SQL注入问题对关键字进行转义登录模块packagecom.avb.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;publicclassloginin{publicstati......
  • LeedCode刷题(2)-Java随机数练习
    2.随机数练习(1)随机生成数题目:请编写如下所示程序随机生成并显示一位数的正整数(1~9的值)随机生成并显示一位数的负整数(-9~-1的值)随机生成并显示两位数的正整数(10~99的值)①Random类总结random是Java提供的一个类库,它的实例会生成一连串的伪随机数Random创建实例有......
  • java——redis随笔——实战——优惠券秒杀——分布式锁
    注意:synchronized用户单机(jvm)上面的锁,对于分布式应用则无能为力。所以对于分布式系统,则需要分布式锁。 分布式锁:满足分布式系统或集群模式下多线程课件并且可以互斥的锁分布式锁的核心思想就是让大家共用同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分......
  • 01 JS基础
    //类型转换varx='11';console.log(parseInt(x));vary=11;console.log(String(y));vari=11.11;console.log(parseInt(i));//字符类型varstr="Jason|is|DSB";console.log(str.length);//返回长度console.log(str.trim());//移除两边空白console.log(......
  • 20231327 司宏林《计算机基础与程序设计》第5周学习总结
    学期(2023-2024-1)学号(20231327)《计算机基础与程序设计》第5周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2023-2024-1计算机基础与程序设计第5周作业)这个作业的目标<关于机器语......
  • [Java]Java初学之多线程03--同步与锁
    Intro本篇文章主要关于多线程"同步"以及"锁"的相关内容~正文同步(Synchronize)概念“同步”是基于“并发”的需求而出现的所谓并发,就是同一个对象被多个线程同时操作,比如两个人同时从同一个账户取钱,再比如春运抢票。多个线程同时使用一个资源,必然会造成混乱。想象一下从前......
  • 线程池的线程数应该怎么配置?有哪几种常见的线程池?
    一、线程池的线程数应该怎么配置?线程在Java中属于稀缺资源,线程池不是越大越好也不是越小越好。任务分为计算密集型、IO密集型、混合型。1.计算密集型:大部分都在用CPU跟内存,加密,逻辑操作业务处理等。2.IO密集型:数据库链接,网络通讯传输等。一般的经验,不同类型线程池的参数配置:1、......
  • 如何用JavaScript更改元素的类?
    内容来自DOChttps://q.houxu6.top/?s=如何用JavaScript更改元素的类?我该如何使用JavaScript响应onclick或其他事件来更改HTML元素的类?现代HTML5技术用于更改类现代浏览器添加了classList,它提供了更方便地操作类的方法,而无需使用库:document.getElementById("MyElement").c......
  • JavaFrame
    1.课程回顾在本人大三时修了JavaWeb编程和Java框架编程,这两门的课程结构大致是这样:JavaWeb:Java框架:Web开发基础Maven工具Servlet基础Spring框架ServletAPI核心接口SpringMVC会话跟踪数据持久化技术数据访问与JavaBeanBootstrap,Javascript,Iframe,Ajax......