zoukankan      html  css  js  c++  java
  • Java的三种多线程

    项目结构

    继承Thread类

    /*
     * Thread类实现了Runnable接口
     */
    
    public class MyThread extends Thread {
        @Override
        public void run() {
            for(int i=0;i<50;i++){
                System.out.println("MyThread子线程 : "+Thread.currentThread().getName()+"~~~"+i);
            }
        }
    }

    实现Runnable接口

    public class MyRunnable implements Runnable {
    
        @Override
        public void run() {
            for(int i=0;i<50;i++){
                System.out.println("MyRunnable子线程 : "+Thread.currentThread().getName()+"~~~"+i);
            }
        }
    
    }

    实现Callable<T>接口

    import java.util.concurrent.Callable;
    /*
     * FutureTask<V>类实现了RunnableFuture<V>接口,
     * RunnableFuture<V>接口实现了Runnable接口、Future<V>接口。
     * FutureTask<V>对象的get方法:等待计算完成,然后获取其结果。
     */
    
    public class MyCallable implements Callable<Integer> {
    
        @Override
        public Integer call() throws Exception {
            int sum = 0;
            for(int i=0;i<100;i++){
                sum += i;
                System.out.println("MyCallable子线程中间结果 : "+sum);
            }
            return sum;
        }
    
    }

    运行

    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.FutureTask;
    
    
    public class Test {
    
        public static void main(String[] args) throws Exception {
            System.out.println("主线程 : "+Thread.currentThread().getName());
            MyThread thread = new MyThread();
            MyRunnable runnable = new MyRunnable();
            Thread thread2 = new Thread(runnable);
            MyCallable callable = new MyCallable();
            FutureTask<Integer> task = new FutureTask<Integer>(callable);
            Thread thread3 = new Thread(task);
            thread.start();
            thread2.start();
            thread3.start();
            int sum = task.get();
            System.out.println("MyCallable子线程最终结果 : " + sum); // 这段代码总是最后执行
        }
    
    }
  • 相关阅读:
    Task10 文本预处理
    Task09 批量归一化
    Task06 Basic of CNN
    Task05 梯度消失和梯度爆炸
    Task 04 过拟合,欠拟合及其解决方案
    机器学习 Task 03 多层感知机
    机器学习 task2 softmax与分类模型
    异步与闭包与fetch
    baidu API
    my own JSON
  • 原文地址:https://www.cnblogs.com/sea-breeze/p/7002622.html
Copyright © 2011-2022 走看看