线程创建

本文详细解析了Java中线程创建的两个关键步骤:创建Thread对象与调用start方法。讲解了内存分配过程,线程获取处理器时间片执行run方法,以及线程生命周期和注意事项。涵盖了继承Thread、实现Runnable接口和方法引用三种创建方式实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程创建

线程创建需要两步:

1. 创建Thread对象

2. 执行start方法

package com.jdojo.threads;

public class SimplestThread {
        public static void main(String[] args) {
            // 1. Creates a thread object
            Thread simplestThread = new Thread();
            // 2. Starts the thread 
            simplestThread.start();
        }     
}

 

线程创建的两步中,都干了啥?

当执行第一步的时候,JVM为其准备了内存空间(堆),创建了线程对象。

当执行start方法,JVM开始安排线程等待处理器的时间片,此时意指线程准备好开始执行了。

当线程获取到处理器的时间片,线程开始执行核心函数run方法。

run方法执行完毕后,线程就结束了,不会再次得到处理器时间片。

线程结束后,不可以再次执行start方法,但是也并不意味着线程结束后,就会被JVM回收,还是要等到回收机制。

注意:这里线程等待时间片不是说等到了就一直到线程结束为止,时间片的长短还是根据处理器进行调度,还同样会有现场保存、现场恢复、上下文切换。

 

线程创建的方式

1. 继承Thread

public class MyThreadClass extends Thread {
        @Override
        public void run() {
            System.out.println("Hello Java thread!");
        }
        // More code goes here
}
MyThreadClass myThread = new MyThreadClass(); 
myThread.start();

线程启动后,会执行run方法的代码。

2. 实现Runnable接口

Runnable aRunnableObject = () -> System.out.println("Hello Java thread!");
Thread myThread = new Thread(aRunnableObject);
myThread.start();

线程启动后,会执行lambda表达式的代码。

3. 方法引用

public class ThreadTest {
        public static void execute() {
            System.out.println("Hello Java thread!");
        } 
}
Thread myThread = new Thread(ThreadTest::execute); 
myThread.start();

由于此处是静态引用,因此可以使用类名。只要方法没有入参,返回值为void,就满足要求。

 

示例代码

启动线程打印1-500

package com.jdojo.threads;

public class PrinterThread {
        public static void main(String[] args) {
            // Create a Thread object
            Thread t = new Thread(PrinterThread::print);
                // Start the thread
            t.start(); 
        }

        public static void print() {
            for (int i = 1; i <= 500; i++) {
                System.out.print(i + " ");
            } 
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值