首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java多线程系列_用Thread类创建线程(2)

在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。...一个普通的Java类只要从Thread类继承,就可以成为一个线程类。并可通过Thread类的start方法来执行线程代码。...注意:任何一个Java程序都必须有一个主线程。一般这个主线程的名子为main.只有在程序中建立另外的线程,才能算是真正的多线程程序。也就是说,多线程程序必须拥有一个以上的线程。...Thread类有一个重载构造方法可以设置线程名。除了使用构造方法在建立线程时设置线程名,还可以使用Thread类的setName方法修改线程名。...原文:http://java.chinaitlab.com/line/778510.html

52230
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java如何创建线程池_java线程池状态

    这里借用《Java并发编程的艺术》,来说一下使用线程池的好处: 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。...备注:工具类Executors可以实现Runnable对象和Callable对象之间的相互转换。...4、如何创建线程池 《阿里巴巴Java开发手册》中强制线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则...CachedThreadPool 和 ScheduledThreadPool:允许创建的线程数量为 Integer.MAX_VALUE ,可能会创建大量线程,从而导致OOM。...方式二:通过Executor框架的工具类Executors来实现,我们可以创建三种类型的ThreadPoolExecutor。 FixedThreadPool:该方法返回一个固定线程数量的线程池。

    1.1K10

    java创建线程池代码_java手写线程池

    jdk提供了一个通过ThreadPoolExecutor创建一个线程池的类 构造器 使用给定的参数和默认的饱和策略、默认的工厂方法创建线程池 ThreadPoolExecutor(int corePoolSize..., 当提交一个任务到线程池的时候,线程池会创建一个线程来执行任务,即使当前线程池已经存在空闲线程,仍然会创建一个线程,等到需要执行的任务数大于线程池基本大小时就不再创建。...如果调用线程池的prestartAllCoreThreads()方法,线程池会提前创建并启动所有的基本线程。...maximumPoolSizeSize 线程池最大数量,线程池允许创建的最大线程数,如果队列满了,并且已创建的线程数小于最大线程数,则线程池会再创建新的线程执行任务。...addWorker(command, false)) reject(command); } 参考文档 https://docs.oracle.com/javase/8/docs/api/java/util

    78230

    java创建线程池参数_java创建线程的四种方式

    一、工作中使用线程池的好处: 1.降低资源消耗,线程的创建和消耗是非常消耗资源的,使用线程池可以避免线程的频繁创建和消耗,从而降低资源消耗。...2.提高响应速度,当请求到达时,线程池可以为请求直接分配一个线程,因此就不用等待线程创建就可以立即执行。 3.线程池可以很好的管理线程。...二、java中有哪些常用的线程池(java.util.concurrent.Executors): 1.CachedThreadPool:可缓存线程池,它是一个可以无限扩大的线程池。...创建方法为:Executors.newFixedThreadPool(3); 3.SingleThreadExecutor:单线程线程池,即只创建一个工作线程来执行任务,单线程线程池最大的特点就是可以保证顺序执行各个任务...创建方法为:Executors.newScheduleThreadPool(5); 三、这样创建线程池有什么问题: 上述线程池的创建方式,可能会导致OOM,例如:FixedThreadPool和SingelThreadPool

    43330

    Java线程创建、线程状态、线程同步协作总结

    线程的创建 三种创建线程方式 1.Thread class,继承Thread类 2.Runnable接口,实现Runnable接口 3.Callable接口,实现Callable接口 ☘️Thread...class,继承Thread类 /** * @author ber * @version 1.0 * @description: 创建线程方式一:继承Thread类;重写run()方法;调用start...接口;重写run()方法;创建run()方法的Thread对象;调用Thread类对象的start()方法开启线程 * @date 21/12/7 13:56 */ class CreateThreadMethod2...Callable接口实现类对象 CreateThreadMethod3 threadMethod3 = new CreateThreadMethod3(); // 2.创建执行服务的线程池...提高响应速度,减少线程创建时间 降低资源消耗,重复利用线程池中线程,即用即取,不需要每次创建 便于管理线程 ☘️线程池使用 ExecutorService接口:Java标准库提供,表示线程池。

    13410

    Java基础--线程创建方式

    线程的创建主要有两种形式,通过继承Thread或者实现Runnable接口,本质上没有太大区别。...run方法与start方法区别 run()是只是类的普通方法,直接调用,将变成串行执行; start()方法调用后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这个线程置于可动行状态...然后通过JVM,线程Thread会调用run()方法,执行本线程的线程体。 线程的状态值 在Java 当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。 第一是创建状态。...在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。 第二是就绪状态。...当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。

    41520

    Java多线程01——多线程的创建

    创建后的子类通过调用start()方法即可执行线程方法。 注意: 通过继承Thread创建的线程类,多个线程间无法共享线程类的实例变量。 需要创建不同Thread对象,自然不共享资源。...接着创建Runnable实现类的对象,作为创建Thread对象的参数target,此Thread对象才是真正的线程对象。 利用实现Runnable接口的线程类创建对象,可以实现线程之间的资源共享。.../* 定义线程类,实现 Runnable接口 重写run()方法 创建实现类对象 创建Thread类,并将线程类对象参数传入Thread构造方法中 启动线程 */ public class UserRunnable...多线程类 import java.util.Date; import java.util.TimerTask; /** * 创建 UserTimer 类,继承 TimerTask 抽象类 * 创建...通过 Executors 的工具类可以创建线程池。

    17020

    Java并发编程:如何创建线程?

    Java并发编程:如何创建线程?   在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。...Java采用的是单线程编程模型,即在我们自己的程序中如果没有主动创建线程的话,只会创建一个线程,通常称为主线程。...二.Java中如何创建线程   在java中如果要创建线程的话,一般有两种方式:1)继承Thread类;2)实现Runnable接口。   ..."+num+"个线程"); } }    创建好了自己的线程类之后,就可以创建线程对象了,然后通过start()方法去启动线程。...三.Java中如何创建进程    在Java中,可以通过两种方式来创建进程,总共涉及到5个主要的类。

    79240

    Java创建线程池的方式

    目录 一、创建线程池的方式一般有两种: 二、通过Executors工厂创建 1. Executors.newSingleThreadExecutor() 2....Executors.newScheduledThreadPool(n) 三、通过new ThreadPoolExecutor(coreThreadSize, max… …) 一、创建线程池的方式一般有两种...Executors.newFixedThreadPool(n) FixedThreadPool 是固定大小的线程池,只有核心线程。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。...线程池大小完全依赖于操作系统(或者说 JVM)能够创建的最大线程大小。SynchronousQueue 是一个是缓冲区为 1 的阻塞队列。...创建一个周期性执行任务的线程池。如果闲置,非核心线程池会在 DEFAULT_KEEPALIVEMILLIS 时间内回收。

    58430

    java创建线程的几种方式

    System.out.println('用Thread类实现线程');     } }      继承 Thread 类,并重写了其中的 run() 方法。...');     } }     首先通过 RunnableThread 类实现 Runnable 接口,然后重写 run() 方法,之后只需要把这个实现了 run() 方法的实例传到 Thread 类中就可以实现多线程...但是无论怎么设置这些属性,最终它还是通过 new Thread() 创建线程的 ,只不过这里的构造函数传入的参数要多一些,由此可以看出通过线程池创建线程并没有脱离最开始的那两种基本的创建方式,因为本质上还是通过...它们可以放到线程池中执行,如代码所示, submit() 方法把任务放到线程池中,并由线程池创建线程,不管用什么方法,最终都是靠线程来执行的,而子线程的创建方式仍脱离不了最开始讲的两种基本方式,也就是实现...,那么这时它确实也创建了线程并执行了任务,但如果我们深入分析定时器的源码会发现,本质上它还是会有一个继承自 Thread 类的 TimerThread,所以定时器创建线程最后又绕回到最开始说的两种方式。

    9310

    创建多线程的方法---1创建Thread类的子类及多线程原理

    创建多线程的方法 创建多线程的第一种方式:创建Thread类的子类 Java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类。...实现步骤: 1.创建一个Thread类的子类。 2.在Thread类的子类中的run方法,设置线程任务(开启线程要做什么)。 3.创建Thread类的子类对象。...4.调用Thread类中的方法start()方法,执行run方法。 void start()使用该线程开始执行,Java虚拟机调用该线程的run方法。...结果是两个线程并发运行,当前线程(main线程;也叫主线程)和另一个线程(创建新的线程,执行其run方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。...Java程序是抢占式调度,哪个线程优先级高 先执行哪个,同一个优先级随机选一个执行。 示例: 主方法: 结果:两个线程在抢占CPU执行时间。 多线程随机打印原理:

    46530

    如何创建并运行Java线程

    Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。...可以用如下方式用java中创建一个线程: Tread thread = new Thread(); 执行该线程可以调用该线程的start()方法: thread.start(); 在上面的例子中,我们并没有为线程编写运行代码...编写线程运行时执行的代码有两种方式:一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Runnable接口。...实现Runnable接口 第二种编写线程执行代码的方式是新建一个实现了java.lang.Runnable接口的类的实例,实例中的方法可以被线程调用。...想要让创建的新线程执行run()方法,必须调用新线程的start方法。 线程名 当创建一个线程的时候,可以给线程起一个名字。它有助于我们区分不同的线程。

    55750

    Java并发编程:如何创建线程?

    在 Java 中创建线程的方式有两种:1)继承 Thread 类  2)实现 Runnable 接口 3)实现 FutureTask 接口 前两种方式创建的线程都无法获取线程的执行结果,而通过 FutureTask...当创建此线程类对象时一个新的线程得以创建,并进入到线程新建状态。通过调用线程对象引用的start()方法,使得该线程进入到就绪状态,此时此线程并不一定会马上得以执行,这取决于CPU调度时机。...."); } }.start(); } } 二、实现Runnable接口 该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为...Thread类的target来创建Thread对象,该Thread对象才是真正的线程对象。...,又在此子类的声明中传入了实现了Runnable对象的类的实例,那么这个例子可以创建一个线程吗?

    68580
    领券