Java 线程基础

线程的创建方式

1.继承Thread类

   public class ThreadDemo extends Thread {

    private String name;

    public ThreadDemo(String name){
        this.name = name;
    }

    /**
     * 这就是线程执行的逻辑体
     */
    @Override
    public void run() {
        for (int i = 1; i <= 100; i++) {
            System.out.println(name+"下载了"+i+"%");
        }
    }
}
-----------------------------------------------------------------
    public static void main(String[] args) {
        //创建一个线程的对象
        ThreadDemo mt = new ThreadDemo("肖申克的救赎");
        //启动一个线程
        mt.start();

        //创建一个线程的对象
        ThreadDemo mt1 = new ThreadDemo("当幸福来敲门");
        //启动一个线程
        mt1.start();


        //System.out.println("方法结束");

    }

 

2.实现Runnable接口

class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 线程执行的逻辑
        System.out.println("Thread is running");
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable);
        thread.start();
    }
}

 

3.实现callable接口

class MyCallable implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        // 线程执行的逻辑
        System.out.println("Thread is running");
        return 42; // 返回值
    }
}

public class Main {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        MyCallable myCallable = new MyCallable();
        FutureTask<Integer> futureTask = new FutureTask<>(myCallable);
        Thread thread = new Thread(futureTask);
        thread.start();

        // 获取线程执行结果
        Integer result = futureTask.get();
        System.out.println("Result: " + result);
    }
}

 比较

特性继承Thread实现Runnable接口实现Callable接口
线程安全机制 无,依赖内部逻辑 无,依赖内部逻辑 无,依赖内部逻辑
线程安全实现难度 中等,逻辑和控制混合 高,共享实例需谨慎同步 中等,结合ExecutorService可简化
共享资源访问 需手动同步 需手动同步,共享实例需特别注意 需手动同步,但ExecutorService提供部分线程安全机制
适用场景 简单任务,少共享资源 多线程共享逻辑,需谨慎同步 复杂任务,需返回值或异常处理,结合线程池可简化同步
posted @ 2025-02-15 15:50  茴香儿  阅读(3)  评论(0)    收藏  举报