美文网首页
3种启动线程的方式

3种启动线程的方式

作者: Theodore的技术站 | 来源:发表于2019-04-08 22:09 被阅读0次

1.继承 thread 类
继承 thread 类,并重写 run 方法

public void MyThread extends Thread{
    private int i;    
    @Override
    public void run(){
        for (; i < 10;i++)
        {
            System.out.println(getName() + "\t" + i);
        }
    }
}

测试:

public class MyTest{
    public static void main(String[] args){
        for (int i = 0;i < 10;i++){
            System.out.println(Thread.currentThread.getName() + "\t" + i);
            if (i == 5){
                MyThread t1 = new MyThread();
                MyThread t2 = new MyThread();
                t1.start();
                t2.strat();
            }
        }
    }
}

2.实现 Runnable 接口

    public class MyRunThread implements Runnable{
        private int i;
        public void run(){
            for (;i < 20; i++){
                System.out.println(Thread.currentThread().getName()+" "+i);
                if(i==20)
                {
                    System.out.println(Thread.currentThread().getName()+"执行完毕");
                }
            }
        }
    }

测试:

public class MyTest{
    public static void main(String[] args){
        for (int i = 0;i < 10;i++){
            System.out.println(Thread.currentThread.getName() + "\t" + i);
            if (i == 5){
                MyRunThread myThread = new MyThread();
                Thread t1 = new Thread(myThread,"1");
                Thread t2 = new Thread(myThread,"2");
                t1.start();
                t2.strat();
            }
        }
    }
}

3.实现 Callable 接口

public class MyCallThread implements Callable<Integer>{
    private int i;
    public Integer call() throw Exception{
        for (;i < 20;i++){
            System.out.println(Thread.currentThread().getName()+""+i);
        }
        return i;
    }
}

测试:

public class MyTest{
    public static void main(String[] args){
        MyCallThread t1 = new MyCallThread();
        FutureTask<Integer> f = new FutureTask<>(t1);
        Thread t2 = new Thread(f,"新线程");
        t2.start();
        try{
            System.out.println(f.get());
        }catch(Exception e) {
            // TODO: handle exception
        }
    }
}

相关文章

  • 多线程(一)启动方式及关键字

    线程的启动方式 继承Thread 实现Runnable 线程的启动方式 多线程的关键字 sleep使当前线程暂停,...

  • 2019-01-25 零碎复习

    线程交互的几种方式 线程启动, A 启动 B, 线程终结, 不要用 Stop , 用 Interrupt 线程的等...

  • iOS 多线程-NSThread

    1. 创建和启动线程 创建、启动线程 2. 其他创建线程方式 创建线程后自动启动线程[NSThread detac...

  • 其他快速开启线程的方法

    创建线程后自动启动线程 隐式创建并启动线程 ● 上述2种创建线程方式的优缺点● 优点:简单快捷● 缺点:无法对线程...

  • 4-1 启动线程的方式

    启动线程的正确方式:start()一、start()有哪些作用?1,启动新线程线程对象在初始化之后被Main线程调...

  • 线程启动的方式

    1: 我们在学校学习的线程启动方式有2种: 第一种:实现Runable接口,重写run方法 第二种:继承Threa...

  • Netty在Spring启动中

    1. 该启动方式无需单独开线程启动netty,dubbo的NettyService就是此方式

  • java中关于线程的一些API

    java中关于线程的一些API: * 线程的启动 线程的启动有两种方式:继承Thread类,复写run方法;实...

  • IOS NSThread线程处理 子线程的启动与结束

    IOS NSThread线程处理 子线程的启动与结束 iOS多线程开发-多线程实现方式 -(void)blockO...

  • iOS 多线程开发

    一、NSThread 1、创建和启动线程 2、其他创建线程方式 上述2种创建线程方式的优缺点优点:简单快捷缺点:无...

网友评论

      本文标题:3种启动线程的方式

      本文链接:https://www.haomeiwen.com/subject/ocsmiqtx.html