美文网首页
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
            }
        }
    }
    

    相关文章

      网友评论

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

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