您的位置:首页 > 编程语言 > Java开发

java 特殊开发包,jxab,xml,并发

2016-01-07 10:52 302 查看
1 同步锁和解开锁

2 原子类型数据

3 线程池

1 jxab 实例

package com.newegg.ec.kafka.util;

import java.io.File;

import java.util.HashSet;

import java.util.Set;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Marshaller;

import javax.xml.bind.Unmarshaller;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement  

class Customer {  

    String name;  

    int age;  

    int id;  

    Set<Book> bookSet;

    @XmlElement  

    public String getName() {  

        return name;  

    }  

    public void setName(String name) {  

        this.name = name;  

    }  

      

    @XmlElement  

    public int getAge() {  

        return age;  

    }  

    public void setAge(int age) {  

        this.age = age;  

    }  

      

    @XmlAttribute  

    public int getId() {  

        return id;  

    }  

    public Set<Book> getBookSet() {
return bookSet;
}
public void setBook(Set<Book> bookSet) {
this.bookSet = bookSet;
}
public void setId(int id) {  

        this.id = id;  

    }  

      

    @Override  

    public String toString() {  

        return "Customer [id=" + id + ",name=" + name + ",age=" + age + "]";  

    }

}  

  

//Marshaller  

public class TestJXAB {  

    public static void main(String[] args) {  

  

        Customer customer = new Customer();  

        customer.setId(100);  

        customer.setName("suo");  

        customer.setAge(29);  

          

        Book book = new Book();  

        book.setId("1");  

        book.setName("哈里波特");  

          

        Book book2 = new Book();  

        book2.setId("2");  

        book2.setName("苹果");  

          

        Set<Book> bookSet = new HashSet<Book>();  

        bookSet.add(book);  

        bookSet.add(book2);  

          

        customer.setBook(bookSet);  

          

        try {  

            File file = new File("src/main/resources/configjxab.xml");  

            JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);  

            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();  

            // output pretty printed  

            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  

            jaxbMarshaller.marshal(customer, file);  

            jaxbMarshaller.marshal(customer, System.out);  

        } catch (JAXBException e) {  

            e.printStackTrace();  

        }  

        

        read();

        

    }  

    static void read(){

    try {  

            File file = new File("src/main/resources/configjxab.xml");  

            JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);  

            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();  

            Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);  

            System.out.println(customer);  

        } catch (JAXBException e) {  

            e.printStackTrace();  

        }  

    }

}  

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<customer id="100">

    <age>29</age>

    <name>suo</name>

</customer>

2 java 并发实例

AtomicInteger简介

这个类真的非常实用,更重要的是 它确实非常简单:

附上自己的代码,可以自己试试:

AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。

 

代码:

package test;

import java.util.concurrent.atomic.AtomicInteger;

/**

 * 来看AtomicInteger提供的接口。

 //获取当前的值

 

 public final int get()

 

 //取当前的值,并设置新的值

 

  public final int getAndSet(int newValue)

 

 //获取当前的值,并自增

 

  public final int getAndIncrement() 

 

 //获取当前的值,并自减

 

 public final int getAndDecrement()

 

 //获取当前的值,并加上预期的值

 

 public final int getAndAdd(int delta)

 * @author YangBaoBao

 *

 */

public class AtomicIntegerDemo {

 public static void main(String[] args) {

  AtomicInteger ai=new AtomicInteger(0);

  int i1=ai.get();

  v(i1);

  int i2=ai.getAndSet(5);

  v(i2);

  int i3=ai.get();

  v(i3);

  int i4=ai.getAndIncrement();

  v(i4);

  v(ai.get());

  

 }

 static void v(int i)

 {

  System.out.println("i : "+i);

 }

}

3 xml读取实例

package com.newegg.ec.kafka.util;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import javax.xml.stream.XMLEventReader;

import javax.xml.stream.XMLInputFactory;

import javax.xml.stream.XMLStreamException;

import javax.xml.stream.events.Attribute;

import javax.xml.stream.events.EndElement;

import javax.xml.stream.events.StartElement;

import javax.xml.stream.events.XMLEvent;

 class Item {
 private String date; 
 private String mode;
 private String unit;
 private String current;
 private String interactive;
 
 public String getDate() {
   return date;
 }
 
 public void setDate(String date) {
   this.date = date;
 }
 public String getMode() {
   return mode;
 }
 public void setMode(String mode) {
   this.mode = mode;
 }
 public String getUnit() {
   return unit;
 }
 public void setUnit(String unit) {
   this.unit = unit;
 }
 public String getCurrent() {
   return current;
 }
 public void setCurrent(String current) {
   this.current = current;
 }
 public String getInteractive() {
   return interactive;
 }
 public void setInteractive(String interactive) {
   this.interactive = interactive;
 }

 @Override
 public String toString() {
   return "Item [current=" + current + ", date=" + date + ", interactive="
       + interactive + ", mode=" + mode + ", unit=" + unit + "]";
 }


 class StaXParser {

  static final String DATE = "date";

  static final String ITEM = "item";

  static final String MODE = "mode";

  static final String UNIT = "unit";

  static final String CURRENT = "current";

  static final String INTERACTIVE = "interactive";

  @SuppressWarnings({ "unchecked", "null" })

  public List<Item> readConfig(String configFile) {

    List<Item> items = new ArrayList<Item>();

    try {

      // First, create a new XMLInputFactory

      XMLInputFactory inputFactory = XMLInputFactory.newInstance();

      // Setup a new eventReader

      InputStream in = new FileInputStream(configFile);

      XMLEventReader eventReader = inputFactory.createXMLEventReader(in);

      // read the XML document

      Item item = null;

      while (eventReader.hasNext()) {

        XMLEvent event = eventReader.nextEvent();

        if (event.isStartElement()) {

          StartElement startElement = event.asStartElement();

          // If we have an item element, we create a new item

          if (startElement.getName().getLocalPart() == (ITEM)) {

            item = new Item();

            // We read the attributes from this tag and add the date

            // attribute to our object

            Iterator<Attribute> attributes = startElement

                .getAttributes();

            while (attributes.hasNext()) {

              Attribute attribute = attributes.next();

              if (attribute.getName().toString().equals(DATE)) {

                item.setDate(attribute.getValue());

              }

            }

          }

          if (event.isStartElement()) {

            if (event.asStartElement().getName().getLocalPart()

                .equals(MODE)) {

              event = eventReader.nextEvent();

              item.setMode(event.asCharacters().getData());

              continue;

            }

          }

          if (event.asStartElement().getName().getLocalPart()

              .equals(UNIT)) {

            event = eventReader.nextEvent();

            item.setUnit(event.asCharacters().getData());

            continue;

          }

          if (event.asStartElement().getName().getLocalPart()

              .equals(CURRENT)) {

            event = eventReader.nextEvent();

            item.setCurrent(event.asCharacters().getData());

            continue;

          }

          if (event.asStartElement().getName().getLocalPart()

              .equals(INTERACTIVE)) {

            event = eventReader.nextEvent();

            item.setInteractive(event.asCharacters().getData());

            continue;

          }

        }

        // If we reach the end of an item element, we add it to the list

        if (event.isEndElement()) {

          EndElement endElement = event.asEndElement();

          if (endElement.getName().getLocalPart() == (ITEM)) {

            items.add(item);

          }

        }

      }

    } catch (FileNotFoundException e) {

      e.printStackTrace();

    } catch (XMLStreamException e) {

      e.printStackTrace();

    }

    return items;

  }



public class TestXml {

  public static void main(String args[]) {

    StaXParser read = new StaXParser();

    List<Item> readConfig = read.readConfig("src/main/resources/configxml.xml");

    for (Item item : readConfig) {

      System.out.println(item);

    }

  }



<?xml version="1.0" encoding="UTF-8"?>

<config>

  <item date="January 2009">

    <mode>1</mode>

    <unit>900</unit>

    <current>1</current>

    <interactive>1</interactive>

  </item>

  <item date="February 2009">

    <mode>2</mode>

    <unit>400</unit>

    <current>2</current>

    <interactive>5</interactive>

  </item>

  <item date="December 2009">

    <mode>9</mode>

    <unit>5</unit>

    <current>100</current>

    <interactive>3</interactive>

  </item>

</config> 

学习 jxab网址
http://www.vogella.com/tutorials/JAXB/article.html
java 特殊开发包,jxab,xml,并发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: