创建线程方法

本文详细介绍了在Java中创建和执行线程的三种主要方法:通过继承Thread类并调用start方法;实现Runnable接口并通过Thread类包裹后调用start方法;以及使用线程池来管理线程资源。每种方法都提供了代码示例,便于理解和实践。

线程:是程序执行流的最小单元,包括就绪、阻塞和运行三种基本状态。

1. 继承 Thread 类,然后调用 start 方法。

package com.oracle.demo01;

public class MyThread  extends Thread{
    public void run(){
//        线程
        System.out.println("线程名"+getName());
    for(int i=0;i<20;i++){
        System.out.println("MyThread-"+i);
    }
}
}
package com.oracle.demo01;

import java.util.concurrent.ThreadPoolExecutor;

public class demo01 {
    
    public static void main(String[] args) {
        Thread th=Thread.currentThread();
        System.out.println(th.getName());
////        获取当前线程对象的名称
//        Thread.currentThread().getName();
//        创建新线程*(放在上面)
        MyThread mythread=new MyThread();
//        开启线程、
        mythread.start();
        for(int i=0;i<20;i++){
            System.out.println("main-"+i);
        }
        
    }

}

2.实现 Runnable 接口的 run 方法, 然后再用 Thread 类包裹后,调用 start 方法。

package com.oracle.demo02;

public class MyRunnable implements Runnable {

    @Override
    public void run() {
for(int i=0;i<20;i++){
    System.out.println("thread-0"+i);
}        
    }

}
package com.oracle.demo02;

public class demo01 {
    public static void main(String[] args) {
//        创建线程任务对象
        MyRunnable mr=new MyRunnable();
//        创建thread对象
        Thread th=new Thread(mr);
        th.start();
        for(int i=0;i<20;i++){
            System.out.println("main-"+i);
        }
        
    }

3.线程池

package com.oracle.demo03;

public class MyRun implements Runnable{
    public void run(){
        String name=Thread.currentThread().getName();
        for(int i=0;i<20;i++){
            System.out.println(name+i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}
package com.oracle.demo01;

public class MyThread  extends Thread{
    public void run(){
//        线程
        System.out.println("线程名"+getName());
    for(int i=0;i<20;i++){
        System.out.println("MyThread-"+i);
    }
}
}
public class demo02 {
public static void main(String[] args) {
//    用线程池的方法完成线程任务
//    从线程池工厂中获取线程池对象
    ExecutorService es=Executors.newFixedThreadPool(2);
//    创建线程任务对象
    MyRun mr=new MyRun();
//    让线程池自主选择一条线程执行线程任务
    es.submit(mr);
    es.submit(mr);
    es.submit(mr);

//    关闭线程池
    es.shutdown();
}
}

 

转载于:https://www.cnblogs.com/-lwl/p/11100908.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值