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;
        }
    }
    
    
    
  • 相关阅读:
    python爬虫统计上证指数周、月涨跌现象
    python每日一题:采用正则表达式,beautifulsoap,xpath爬取网站数据
    谈股市与月份的关系
    python之正则表达式
    python每日一题:使用代理服务器爬虫
    python之cookie使用
    python每日一题:爬虫入门之利用xpath查找网页元素节点
    python每日一题:制作网页,与女朋友的点点滴滴
    【Java基础】Java11 新特性
    【Java基础】Java10 新特性
  • 原文地址:https://www.cnblogs.com/superyucong/p/12725429.html
Copyright © 2011-2022 走看看