zoukankan      html  css  js  c++  java
  • 001 线程的创建

    一 .概述

    在java之中Thread类描述的就是线程这个概念,创建线程就是创建Thread.为了划分并发任务的概念和并发本身,提供了Runnable接口分离线程逻辑单元.


     二 .继承Thread创建线程 

        @Test
        public void extendsThread() {
            new Thread() {
                @Override
                public void run() {
                    for(;;)
                        System.out.println("extends Thread ....");
                };
            }.start();
        }

      在上面,我们通过继承Thread,创建了一个线程,并使用start()方法运行了该线程.在这里,线程的启动是需要调用start()方法的,其中的原因在后面分析.


     三 . 使用Runnable来分离线程逻辑单元  

        @Test
        public void implementsRunnable() {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    for(;;)
                        System.out.println("implements Runnable ...");
                }
            }).start();
        }

      在上面,我们实现了一个Runnable接口作为参数传递给了Thread类,在后面我们会分析一下这种情况.


     四 .Thread类

      

    我们看到Thread本身就实现着Runnable接口了.

      

    我们看到Thread的构造函数是可以传递一个Runable接口对象的.

      总结 : 线程对象在启动的时候,会刦调用run()方法,首先会判断本身是否有target(传递的Runnable),没有就会执行自己的run()方法.


    五 .Callable接口  

    Callable<String> callable = new Callable<String>() {
                @Override
                public String call() throws Exception {
                    return "thread is running";
                }
            };
            FutureTask<String> futureTask = new FutureTask<String>(callable);
            new Thread(futureTask).start();
            System.out.println(futureTask.get());

    在上面,我们首先创建一个Callable接口对象的实例,然后将一个接口包装称为一个FutureTask对象的实例,我们注入到Thread的实例之中,我们就创建了一个待返回值的线程.

  • 相关阅读:
    JDK内置工具使用
    awk 数组
    c++面试题
    C++内存分配
    awk 数字比较
    awk脚本 排序
    awk 读取 shell 变量的方法
    NVelocity系列:Getting Start With NVelocity
    Castle.ActiveRecord分页示例
    NVelocity系列:NVelocity配置详解
  • 原文地址:https://www.cnblogs.com/trekxu/p/8995446.html
Copyright © 2011-2022 走看看