我是靠谱客的博主 危机白昼,最近开发中收集的这篇文章主要介绍线程其他内容(守护线程、定时器、实现线程的第三种方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 守护线程:

main:{        
        MyThread t = new MyThread();
        t.setName("t");
        t.setDaemon(true);//设置为守护线程,主线程结束,t也会结束
        t.start();

        for (int i = 0;i < 10;i++){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "--->" +i);
        }
    }

    class MyThread extends Thread{
        public MyThread() {
        }

        @Override
        public void run() {
            int i = 0;
            while(true){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"--->"+ i++);
            }
        }
    }

 定时器:

main:{
        Timer timer = new Timer();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date firstTime = null;
        try {
            firstTime = sdf.parse("2022-10-17 17:46:00");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        timer.schedule(new LogTimerTask(),firstTime,1000*10);
    }

    class LogTimerTask extends TimerTask {

        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void run() {
            //需要执行的任务
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String strTime = sdf.format(new Date());
            System.out.println(strTime + ":成功完成了一次备份");
        }
    }

实现线程的第三种方式:

            FutureTask task = new FutureTask(new Callable() {
            @Override
            public Object call() throws Exception {
                System.out.println("call method begin");
                Thread.sleep(10000);
                System.out.println("call method end");
                int a = 100;
                int b = 200;
                return a+b;
            }
        });
        Thread t = new Thread(task);
        t.start();
        try {
            Object obj = task.get();//get()会导致当前线程阻塞
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Hello world!");

最后

以上就是危机白昼为你收集整理的线程其他内容(守护线程、定时器、实现线程的第三种方式的全部内容,希望文章能够帮你解决线程其他内容(守护线程、定时器、实现线程的第三种方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部