• 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;
        }
    }
    
    
    
  • 相关阅读:
    NPOIHelper.cs (NPOI 2.1.1)
    使用哈希加盐法来为密码加密【转】
    让普通控件拥有左键移动窗体的功能
    Reflector反编译.NET文件后修复【转】
    SD卡中FAT32文件格式快速入门(图文详细介绍)【转】
    项目管理知识体系指南(PMBOOK指南)(第5版) 阅读摘要
    数学
    位运算小结
    字符串(1)——Detect Capital
    数组和矩阵(3)——Next Greater Element I
  • 原文地址:https://www.cnblogs.com/superyucong/p/12725429.html
Copyright © 2020-2023  润新知