zoukankan      html  css  js  c++  java
  • Java基础进阶_7

    创建线程三种方式:

    1)直接定义一个类继承线程类Thread,重写run()方法,创建线程对象
    调用线程对象的start()方法启动线程。
    缺点:线程类已经继承了Thread类无法继承其他类了,功能不能通过继承拓展(单继承的局限性)。
    public class ThreadDemo1 {
        public static void main(String[] args) {
            Thread t1 = new MyThread("线程1");
            t1.start();
    
            Thread t2 = new MyThread("线程2");
            t2.start();
    
            for (int i = 0; i < 10; i++) {
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
    
        }
    
    }
    
    class MyThread extends Thread{
    
        MyThread(String name){
            super(name);
        }
    
        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
    }
    2)定义一个线程任务类实现Runnable接口,重写run()方法,创建线程任务对象,把
    线程任务对象包装成线程对象, 调用线程对象的start()方法启动线程。
    public class ThreadDemo2 {
    
        public static void main(String[] args) {
            Runnable target = new MyThread1();
    
            Thread t1 = new Thread(target,"线程1");
            t1.start();
    
            Thread t2 = new Thread(target,"线程2");
            t2.start();
    
            for (int i = 0; i < 10; i++) {
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
    
        }
    
    }
    
    class MyThread1 implements Runnable{
    
        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
    }
    3)实现Callable接口。
    实现Callable接口。
    -- 1,定义一个线程任务类实现Callable接口 , 申明线程执行的结果类型。
    -- 2,重写线程任务类的call方法,这个方法可以直接返回执行的结果。
    -- 3,创建一个Callable的线程任务对象。
    -- 4,把Callable的线程任务对象包装成一个未来任务对象。
    -- 5.把未来任务对象包装成线程对象。
    -- 6.调用线程的start()方法启动线程
    
    
    public class ThreadDemo3 {
    
        public static void main(String[] args) {
            Callable call = new MyThread3();
            FutureTask task = new FutureTask(call);
            Thread t = new Thread(task);
    
            t.start();
            try {
                System.out.println(task.get());
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
    
    class MyThread3 implements Callable{
    
        @Override
        public Object call() throws Exception {
            int sum = 0;
            for (int i = 0; i < 10; i++) {
                System.out.println(Thread.currentThread().getName()+":"+i);
                sum+=i;
            }
            return sum;
        }
    }
    
    
    
  • 相关阅读:
    浙大数据结构课后习题 练习二 7-2 Reversing Linked List (25 分)
    浙大数据结构课后习题 练习二 7-2 一元多项式的乘法与加法运算 (20 分)
    浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)
    浙大数据结构课后习题 练习一 7-1 最大子列和问题 (20 分)
    PAT Basic 1019 数字黑洞 (20 分)
    PAT Basic 1017 A除以B (20 分)
    PAT Basic 1013 数素数 (20 分)
    PAT Basic 1007 素数对猜想 (20 分)
    PAT Basic 1003 我要通过! (20 分)
    自动化运维——HelloWorld(一)
  • 原文地址:https://www.cnblogs.com/superyucong/p/12725429.html
Copyright © 2011-2022 走看看