public class SocketReceiveFile extends Thread {
    DatagramSocket ds = null;
    DatagramPacket dp = null;
    File file = null;    @Override
    public void run() {
        try {
            ds = new DatagramSocket(7999);
            while (true) {
                byte[] buf = new byte[1024*8];
                dp = new DatagramPacket(buf, buf.length);
                ds.receive(dp);
                String str = new String(buf);
                System.out.println(str);
                ByteArrayInputStream byteArray = new ByteArrayInputStream(str.trim().getBytes());                 System.out.println("接收完成");
                mayparseXML(byteArray);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public  byte[] readFile(String filePath) throws IOException {
        File file = new File(filePath);
        if (!file.exists()) {
            return null;
        }
        FileInputStream fileOS = new FileInputStream(file);
        BufferedInputStream buffin = new BufferedInputStream(fileOS);
        ByteArrayOutputStream bytestream = new ByteArrayOutputStream();  
              int ch; 
              while ((ch = buffin.read()) != -1) { 
                bytestream.write(ch); 
              } 
              byte ret[] = bytestream.toByteArray(); 
              bytestream.close();  
        System.out.println("client读取的数据长度"+ret.length);
        return ret;
    }
    private void mayparseXML(ByteArrayInputStream bis) throws IOException, SAXException {
        PPVSPMessageDetailsConfiguration libraryDetails = GPSRuleSet
                .getLibraryDetailsConfig(bis);
        HashMap map = libraryDetails.getMovieDetailsMap();
        Collection movieDetailsColl = map.values();
        if (movieDetailsColl != null) {
            Iterator itMovieDetails = movieDetailsColl.iterator();
            while (itMovieDetails.hasNext()) {
                ParamsDetailsConfiguration movieDetails = (ParamsDetailsConfiguration)
                itMovieDetails.next();
                System.out.println(movieDetails.getDeviceID() + " -> "
                        + movieDetails.getTime() + " -> "
                        + movieDetails.getDirection() + " -> "
                        + movieDetails.getDivisionEW() + " -> "
                        + movieDetails.getDivisionNS() + " -> "
                        + movieDetails.getLongitude());
            }
        }
问题:在客户端我隔10秒会发送一个xml文件过来,但服务器这边我怕10秒钟处理不完我发过来的xml文件。所以我想使用多线程加队列将接收过来的xml文件存储在队列中。 在代码中str变量已得到我读取出来的样式。我想在mayparseXML()之前放入队列中。每次mayparseXML时去从队列中取 。代码随意改。本屌第一次使用这个。不太熟悉队列,求帮忙...