JAVA多线程

本文详细介绍了Java多线程的基础概念,包括进程、线程、同步异步、并发并行等核心概念,并提供了三种实现多线程的方法:继承Thread类、实现Runnable接口以及实现Callable接口并使用FutureTask。

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

JAVA多线程
一、线程基础
1.一个java程序叫做一个进程,一个进程由1个或多个线程组成
2. 一个进程的所有线程共享一个内存空间
3. 一个线程是一个独立的执行路径,他是否应该结束,应由其自身决定
4. 在JAVA中,线程分为守护线程和用户线程,
用户线程:当一个进程中所有用户线程都死亡时,进程结束
守护线程:守护用户线程的,当最后一个用户线程死亡时,所有守护线程自杀。 设置守护线程:Thread.setDeamon

5.同步异步
同步:排队进行
异步:同时进行

6.并发并行
并发:多个事务在同一时间段发生
并行;多个事务在同一时刻一起发生

7.线程阻塞:所有耗时操作都可称线程阻塞。

二、Java实现多线程的三种方法
常用两种:
1.继承Thread类,重写run()方法,对象调用start()开启线程。

public class Main {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
    }
}
static class MyThread extends Thread{
    @Override
    public synchronized void start() {
        super.start();
    }

    @Override
    public void run() {
        for(int i =0;i<10;i++){
            System.out.println("不爱"+i);
        }
    }
}

2.实现Runnable接口,重写run()方法,创建任务对象,创建Thread线程,分配任务任务给线程

public class Main {
    public static void main(String[] args) {
        //1. 创建事务对象
        MyRunnable t = new MyRunnable();
        //2. 创建线程,为其分匹配事务t
        Thread thread = new Thread(t);
        //3.启动线程
        thread.start();
    }
}
//自定义任务MyRunnable
static class MyRunnable implements Runnable{
    @Override
    public void run() {
        for(int i =0;i<10;i++){
            System.out.println("不爱"+i);
        }
    }
}

3.不常用的第三种:拥有返回值的线程-实现Callable接口并创建对象,使用FutureTask<>创建任务对象,创建新线程执行任务。用get()方法可以得到线程返回值。

public class Main {
    public static void main(String[] args) {
  		MyCallable myCallable = new MyCallable();
        //2. 创建任务对象FutureTask,传入对象myCallable
        FutureTask<Integer> task = new FutureTask<>(myCallable);
        //3. 创建线程,分配任务task,启动线程
        new Thread(task).start();
        //4. 获取线程返回值,并打印
        System.out.println("return:"+task.get());
    }

    private static class MyCallable implements Callable<Integer> {
        @Override
        public Integer call() throws Exception {
            for(int i = 0;i<10;i++){
                System.out.println(Thread.currentThread().getName()+i);
            }
            return 0;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值