zoukankan      html  css  js  c++  java
  • java中的Java5.0 的注释 (Annotation)、多线程包1(J2SE入门25)

    Java5.0 的注释 (Annotation)

    描述代码的代码。给编译器看的代码,作用是规范编译器的语法。

    class Student{
    @Override
    public String toString(){
    return “student”;
    }
    }



    类型(接口)

    1.标记注释
    @Override
    2.单值注释
    @注释名(prameter=10)

    int parameter
    特例:
    @注释名 (value “134” )
    @SuperessWarning({ddd,aaa,ccc})  //JVM还没有实现这个注释
    3.普通注释(多值注释)
    (key1=value,……)

    4.自定义注释
    public  @interface Test{
    }
    在自定义注释时,要用注释来注释(描述)注释。
    @target(),用来描述(注释)注释所能够注释的程序员元素。
    @Retention(),描述(注释)注释要保留多久。

    注释的属性类型可以是
    8种基本类型,String,Enum,Annotation
    以及它们的数组

    三个新加的多线程包

    1,java.util.concurrent.locks. 
    2,java.util.concurrent包含了常用的多线程工具,是新的多线程工具的主体。 
    3,java.util.concurrent.atomic包含了不用加锁情况下就能改变值的原子变量,比如说AtomicInteger提供了addAndGet()方法。Add和Get是两个不同的操作,为了保证别的线程不干扰,以往的做法是先锁定共享的变量,然后在锁定的范围内进行两步操作。但用AtomicInteger.addAndGet()就不用担心锁定的事了,其内部实现保证了这两步操作是在原子量级发生的,不会被别的线程干扰。 
    java.util.concurrent.locks包包含锁定的工具。

    Callable 和 Future接口

    Executor接口替代了Thread类,他可以创建定量的和动态以及周期性的线程池。
    ExecutorService接口,线程池,用来存放线程来节省创建和销毁资源的消耗。


    Callable类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。Callable和Runnable有几点不同:
    Callable规定的方法是call(),而Runnable规定的方法是run(). 
    Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。 
    call()方法可抛出异常,而run()方法是不能抛出异常的。

     
    Future对象可以获得线程运行的返回值

    运行Callable任务可拿到一个Future对象,通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果。 
    以下是Callable的一个例子:

    public class DoCallStuff implements Callable{ 
    // *1
    private int aInt;
    public DoCallStuff(int aInt) {
    this.aInt = aInt;
    }
    public String call() throws Exception {
    //*2
    boolean resultOk = false
    if(aInt == 0){
    resultOk = true
    }
    else if (aInt == 1){
    while(true){
    //infinite loop
    System.out.println("looping....");
    Thread.sleep(3000);
    }
    }
    else {
    throw new Exception("Callable terminated with Exception!"); //*3
    }
    if (resultOk){
    return "Task done.";
    } else {
    return "Task failed";
    }
    }
    }

    *1: 名为DoCallStuff类实现了Callable,String将是call方法的返回值类型。例子中用了String,但可以是任何Java类。
    *2: call方法的返回值类型为String,这是和类的定义相对应的。并且可以抛出异常。
    *3: call方法可以抛出异常,如加重的斜体字所示。

  • 相关阅读:
    linux中断处理浅析
    linux页面回收浅析
    linux线程同步浅析
    剖析一个由sendfile引发的linux内核BUG
    比memcpy更快的内存拷贝
    linux内核SMP负载均衡浅析
    sscanf,snprintf
    mysql中实现longblob数据流式读写
    sscanf
    substr复制字符串的一部分
  • 原文地址:https://www.cnblogs.com/syxchina/p/2197216.html
Copyright © 2011-2022 走看看