首页 > 编程语言 > 详细

Java多线程学习笔记

时间:2019-12-24 18:18:53      阅读:92      评论:0      收藏:0      [点我收藏+]

Java多线程

启动多线程的方法们

继承Thread类

重写该类的run()方法.然后创建该类的实例,调用start()方法来启动该线程.
Thread.currentThread() 是Thread类的静态方法,返回当前正在执行的线程对象.
实例代码如下:

public class FirstThread extends Thread {
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + " " + i);
        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + " " + i);
            if (i == 20) {
                new FirstThread().start();
                new FirstThread().start();
            }
        }
    }
}

实现Runnable接口创建线程类

实现Runnable接口,并重写该接口的run()方法,创建Runnable接口实现类的实例,并以此作为Thread的target来创建Thread对象,并start();
示例代码如下:

public class SecondThread implements Runnable{
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + " " + i);
        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + " " + i);
            if (i == 20) {
                SecondThread secondThread = new SecondThread();
                new Thread(secondThread).start();
                //还可以给线程起名字
                new Thread(secondThread, "我的线程").start();
                //也可以直接用匿名内部类来写
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("i love you");
                    }
                }).start();
                //使用lambda表达式来写
                new Thread(() -> System.out.println("Hello"));
            }
        }
    }
}

实现Callable接口

创建并启动有返回值的线程的步骤如下:

  1. 创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,且该call()方法有返回值,再创建Callable()实现类的实例.
  2. 使用FutureTask类来包装Callable对象,该FutureTask对象封装了Callable对象的call()方法的返回值.
  3. 使用FutureTask对象作为Thread对象的target创建并启动新线程.
  4. 调用FutureTask对象的get()方法来获得子线程执行结束后的返回值.
    示例代码:

Java多线程学习笔记

原文:https://www.cnblogs.com/shiguangqingqingchui/p/12092701.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!