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;
        }
    }
    
    
    
  • 相关阅读:
    使用JS对中文字符串进行utf8的Base64编码
    subprocess理解
    25组新鲜出炉的有用图标集
    jQuery UI 1.8.9 发布
    正则匹配拼音
    jQuery Mobile 教程 (1)
    10款精选的用于构建良好易用性网站的jQuery插件
    Html 5 video/audio 格式转换 ogg
    10个有用的jquery 图片插件
    asp.net MVC 权限设计(续)
  • 原文地址:https://www.cnblogs.com/superyucong/p/12725429.html
Copyright © 2011-2022 走看看