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;
        }
    }
    
    
    
  • 相关阅读:
    sql server中case when的用法
    Memcached Cache
    查询表、字段、类型、是否主键、长度、小数位、是否允许空、默认值等详细查询
    标准北京时间同步
    删除表中重复id值
    使用canvas压缩图片 并上传
    使用LogParser 将iis日志导入到数据库中
    查询表大小和行数
    sqlserver快速删除整个表数据
    Slim安装以及使用【转】
  • 原文地址:https://www.cnblogs.com/superyucong/p/12725429.html
Copyright © 2011-2022 走看看