码迷,mamicode.com
首页 > 编程语言 > 详细

java的多线程学习,第一记

时间:2018-11-28 18:53:35      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:有一个   return   extend   tst   启动   执行   地方   read   nts   

实现多线程有三种方法

1,继承THread类

import com.sun.org.apache.xpath.internal.SourceTree;

public class test{

    //继承Thread类并重写run方法
    public static class MyThread extends Thread{
        @Override
        public void run(){
            System.out.println("I am a child thread");
        }
    }

    public static void main(String[] args) {
        //创建线程
        MyThread thread = new MyThread();
        //启动线程
        thread.start();
    }


}

2,实现Runable接口

public class test1{

    public static class RunableTask implements Runnable{

        @Override
        public void run(){
            System.out.println("I am a child thread");
        }
    }

    public static void main(String[] args) {
        RunableTask task = new RunableTask();
        new Thread(task).start();
        new Thread(task).start();
    }
}

3,使用FutrueTask方法

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

public class test2{
    

    public static class CallerTask implements Callable<String>{

        @Override
        public String call()throws Exception{
            return "hello";
        }
    }

    public static void main(String[] args) {
        //create asynchronous task
        FutureTask<String> futureTask = new FutureTask<>(new CallerTask());
        //start thread
        new Thread(futureTask).start();
        try {
            //wait task excute 
            String result = futureTask.get();
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 三种方式的对比优劣:

使用继承方式的好处是,在run()方法内获取当前线程直接使用this就可以了,无须使用Thread.currentThread()方法,不好的地方是Java不支持多线程,如果继承了Thread类,

那么就不能继承其他类了。另外任务与代码没有分离,当多个线程执行一样的任务时需

要多份任务代码,而Runable接口则没有这个限制。

如上面代码所示,两个线程共用一个task代码逻辑,如果需要,可以给RunableTask添加参数

进行任务区分。但是上面两种方式都有一个缺点,就是任务没有返回值。用FutureTask方式是有返回值的

java的多线程学习,第一记

标签:有一个   return   extend   tst   启动   执行   地方   read   nts   

原文地址:https://www.cnblogs.com/fuckingPangzi/p/10033526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!