Java基础进阶_7

Posted 余聪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    }
}

 

以上是关于Java基础进阶_7的主要内容,如果未能解决你的问题,请参考以下文章

java基础进阶篇_HashSet------java源码栈

java基础进阶篇_HashTable------java源码栈

java基础进阶篇_LinkedHashMap------java源码栈

Java基础进阶_2

网易云课堂_Java语言程序设计进阶_第1周 类和对象_1分数

Java进阶之光!2021必看-Java高级面试题总结