首页 > 编程语言 >java线程二(创建线程的5种方法)

java线程二(创建线程的5种方法)

时间:2022-11-29 21:36:52浏览次数:45  
标签:java Thread 创建 System 线程 println new out

20221129:从正定方舱出来了,哇,呼吸呼吸新鲜空气的感觉真好,隔壁河北工商职业学院的小哥,忘记加他微信,自己的手机没信号,看小哥打的csgo和 植物僵尸人大战挺好看的,加上这小哥微信就好了,回头教教我打,哇哈哈哈哈。

 

    static class MyThread extends Thread {
        @Override
        public void run() { System.out.println("1.Hello MyThread!"); }
    }

    /**
     * 这种方式更好,因为实现了runnable之后还可以实现其他类,而一旦继承了Thread之后就不能
     * 从其他类继承了。
     * */
    static class MyRun implements Runnable{
        @Override
        public void run() {
            System.out.println("2.Hello MyRun");
        }
    }

    static class MyCall implements Callable<String> {
        @Override
        public String call() throws Exception {
            return "5.successss";
        }
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        new MyThread().start();
        new Thread(new MyRun()).start();
        new Thread(()->{
            System.out.println("4.Hello Lambda!");
        }).start();
        ExecutorService service = Executors.newCachedThreadPool();
        service.execute(()->{
            System.out.println("3.Hello ThreadPool");
        });

        //5. Future可以带有返回值,也是利用线程池来实现
        Future<String> f = service.submit(new MyCall());
        try {
            String s = f.get();
            System.out.println(s);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

        service.shutdown();

        //6.也可以自己写FutureTask,只是没有线程池方便
        FutureTask<String> task = new FutureTask<>(new MyCall());
        Thread t = new Thread(task);
        t.start();
        System.out.println(task.get()); //get方法会同步等待返回.
    }

 

标签:java,Thread,创建,System,线程,println,new,out
From: https://www.cnblogs.com/belen87/p/16936676.html

相关文章

  • 创建仿生算法来寻找大脑癫痫灶
    发作间期的尖峰。a)典型波形。b)在时间t=0时传感器上的颜色编码活动分布示例,对应于峰值。它显示了一个明确的偶极子模式,表明符号变化区域中的癫痫灶。莫斯科国立高等经......
  • Kernel分析—进程创建后用户栈是怎么分配的
    1. Shell终端中执行可执行文件过程简述:(1)读取用户由键盘输入的命令行。(2)分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve()内部处理所要求的形式。(3......
  • 练习_for循环创建用户
    #!/usr/bin/bashread-p"pleaseinputnumber:"numif[[!"$num"=~^[0-9]+$]];thenecho"errornumber"exitfiread-p"pleaseinputpref......
  • 自定义构造函数 创建对象
    函数适用于封装方法的  构造函数就是用于封装对象的1.构造函数首字母大写2.调用通过newnew函数名()3.通过this添加属性//functionPig(name,age){//......
  • java list根据对象的某个属性排序
    javalist根据对象的某个属性排序 Collections.sort(list1,newComparator<BlogRank>(){@Overridepublicintcompare(BlogRankblogRankObj1,BlogRa......
  • 创建vue快捷代码
    实现在新建 **.vue文件中,输入vue2,就可以补全vue2的结构代码    回车后出现下面的代码文件,复制下面代码段,到红框的位置,其中prefix可以自己设定输入什......
  • java学习问题
    1、nacosConnectionrefused:connect由于配置文件配置错误引起的。我的nacos是部署在另一台linux服务器的,yml具体配置如下: ......
  • JMM(java内存模型)
                                println方法中加了synchronized关键字,保证了可见性与原子性。     ......
  • 【开发小技巧】028—使用CSS创建卡通动画加载效果
    在实际项目开发中,一般都会设计一个动画加载效果,今天这个加载效果非常有趣,可以帮助用户在等待程序加载时,缓解用户着急的情绪。HTML代码:在本文中,设计了代码的基本结构。<!DOCT......
  • 一行能装逼的JavaScript代码
    一行神奇的js代码,当时我就震惊了,这不就是传说中的ZB神奇么……哈哈。写本篇文章的缘由是之前看到了一段js代码,如下:​​(!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]+({}+......