java多线程压缩文件|什么是Java多线程

㈠ java 多线程操作文件

synchronized是用于锁定一个方法或者一段处理只能由一个线程进入。你可以在写文件的处理部分加上这个控制。只读取文件的需求用不着多线程吧,你一次读入内存,其他线程直接在内存中处理可以了

㈡ 要用java实现多线程的文件上传该如何去做

的资源消耗,因此,在进行同类事情,需要进行互相的通讯等等事情的时候,都采用线程来进行处理。对于只做固定的一件事情(比如:计算1+2+3+…+9999999)来说,其性能上不会比采用单线程的整体效率高,原因是,同时都是要做这么多运算,采用多线程的话,系统在进行线程调度的过程中喙浪费一些资源和时间,从而性能上下降。那么,多线程是否就没有存在的意义了呢?答案当然不是的。多线程还是有存在的价值的,我们在写输入流输出流,写网络程序等等的时候,都会出现阻塞的情况,如果说,我们不使用多线程的话,从A中读数据出来的时候,A因为没有准备好,而整个程序阻塞了,其他的任何事情都没法进行。如果采用多线程的话,你就不用担心这个问题了。还举个例子:游戏中,如果A角色和B角色采用同一个线程来处理的话,那么,很有可能就会出现只会响应A角色的操作,而B角色就始终被占用了的情况,这样,玩起来肯定就没劲了。因此,线程是有用的,但也不是随便乱用,乱用的话,可能造成性能的低下,它是有一点的适用范围的,一般我认为:需要响应多个人的事情,从设计上需要考虑同时做一些事情(这些事情很多情况下可能一点关系都没有,也有可能有一些关系的)。使用多线程的时候,如果某些线程之间涉及到资源共享、互相通讯等等问题的时候,一定得注意线程安全的问题,根据情况看是不是需要使用synchronized关键字。另外,站长团上有产品团购,便宜有保证

㈢ java多线程压缩文件

public class Test{public static void main(String args[])throws Exception{File file = new File("D:\\Test.java");//Text文件BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件String s = null;while((s = br.readLine())!=null){//使用readLine方法,一次读一行System.out.println(s);}br.close();;}}

㈣ Java如何实现多线程传输文件,就像迅雷下载一样,开十多个线程分段传送字节流

程序分Server和Client服务器端打开侦听的端口,一有客户端连接就创建两个新的线程来负责这个连接一个负责客户端发送的信息(ClientMsgCollectThread 类),另一个负责通过该Socket发送数据(ServerMsgSendThread )Server.java代码如下:/* * 创建日期 2009-3-7 * * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */package faue.MutiUser;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * 服务器端 * * @author Faue */public class Server extends ServerSocket { private static final int SERVER_PORT = 10000; /** * 构造方法,用于实现连接的监听 * * @throws IOException */ public Server() throws IOException { super(SERVER_PORT); try { while (true) { Socket socket = super.accept(); new Thread(new ClientMsgCollectThread(socket), "getAndShow" + socket.getPort()).start(); new Thread(new ServerMsgSendThread(socket), "send" + socket.getPort()).start(); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { new Server(); } /** * 该类用于创建接收客户端发来的信息并显示的线程 * * @author Faue * @version 1.0.0 */ class ClientMsgCollectThread implements Runnable { private Socket client; private BufferedReader in; private StringBuffer inputStringBuffer = new StringBuffer("Hello"); /** * 得到Socket的输入流 * * @param s * @throws IOException */ public ClientMsgCollectThread(Socket s) throws IOException { client = s; in = new BufferedReader(new InputStreamReader(client .getInputStream(), "GBK")); } public void run() { try { while (!client.isClosed()) { inputStringBuffer.delete(0, inputStringBuffer.length()); inputStringBuffer.append(in.readLine()); System.out.println(getMsg(inputStringBuffer.toString())); } } catch (IOException e) { //e.printStackTrace(); System.out.println(client.toString() + " is closed!"); } } /** * 构造显示的字符串 * * @param line * @return */ private String getMsg(String line) { return client.toString() + " says:" + line; } } /** * 该类用于创建发送数据的线程 * * @author Faue * @version 1.0.0 */ class ServerMsgSendThread implements Runnable { private Socket client; private PrintWriter out; private BufferedReader keyboardInput; private StringBuffer outputStringBuffer = new StringBuffer("Hello"); /** * 得到键盘的输入流 * * @param s * @throws IOException */ public ServerMsgSendThread(Socket s) throws IOException { client = s; out = new PrintWriter(client.getOutputStream(), true); keyboardInput = new BufferedReader(new InputStreamReader(System.in)); } public void run() { try { while (!client.isClosed()) { outputStringBuffer.delete(0, outputStringBuffer.length()); outputStringBuffer.append(keyboardInput.readLine()); out.println(outputStringBuffer.toString()); } } catch (IOException e) { //e.printStackTrace(); System.out.println(client.toString() + " is closed!"); } } }}客户端:实现基于IP地址的连接,连接后也创建两个线程来实现信息的发送和接收/* * 创建日期 2009-3-7 * */package faue.MutiUser;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;/** * 客户端 * * @author Faue */public class Client { private Socket mySocket; /** * 创建线程的构造方法 * * @param IP * @throws IOException */ public Client(String IP) throws IOException { try { mySocket = new Socket(IP, 10000); new Thread(new ServerMsgCollectThread(mySocket), "getAndShow" + mySocket.getPort()).start(); new Thread(new ClientMsgSendThread(mySocket), "send" + mySocket.getPort()).start(); } catch (IOException e) { //e.printStackTrace(); System.out.println("Server.IP:" + IP + " port:10000 can not be Connected"); } } public static void main(String[] args) throws IOException { try { new Client(args[0]); } catch (Exception e) { System.out.println("输入的IP地址错误"); } } /** * 该类用于创建接收服务端发来的信息并显示的线程 * * @author Faue * @version 1.0.0 */ class ServerMsgCollectThread implements Runnable { private Socket client; private BufferedReader in; private StringBuffer inputStringBuffer = new StringBuffer("Hello"); /** * 得到Socket的输入流 * * @param s * @throws IOException */ public ServerMsgCollectThread(Socket s) throws IOException { client = s; in = new BufferedReader(new InputStreamReader(client .getInputStream(), "GBK")); } public void run() { try { while (!client.isClosed()) { inputStringBuffer.delete(0, inputStringBuffer.length()); inputStringBuffer.append(in.readLine()); System.out.println(getMsg(inputStringBuffer.toString())); } } catch (IOException e) { //e.printStackTrace(); System.out.println(client.toString() + " is closed!"); System.exit(0); } } /** * 构造输入字符串 * * @param line * @return */ private String getMsg(String line) { return client.toString() + " says:" + line; } } /** * 该类用于创建发送数据的线程 * * @author Faue * @version 1.0.0 */ class ClientMsgSendThread implements Runnable { private Socket client; private PrintWriter out; private BufferedReader keyboardInput; private StringBuffer outputStringBuffer = new StringBuffer("Hello"); /** * 得到键盘的输入流 * * @param s * @throws IOException */ public ClientMsgSendThread(Socket s) throws IOException { client = s; out = new PrintWriter(client.getOutputStream(), true); keyboardInput = new BufferedReader(new InputStreamReader(System.in)); } public void run() { try { while (!client.isClosed()) { outputStringBuffer.delete(0, outputStringBuffer.length()); outputStringBuffer.append(keyboardInput.readLine()); out.println(outputStringBuffer.toString()); } out.println("— See you, bye! —"); } catch (IOException e) { //e.printStackTrace(); System.out.println(client.toString() + " is closed!"); System.exit(0); } } }} 如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!vaela

㈤ 什么是Java多线程

1、进程和抄线程:进程:正在进行的程序。每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元。线程:进程内部的一条执行路径或者一个控制单元。两者的区别:一个进程至少有一个线程进程在执行过程中拥有独立的内存单元,而多个线程共享内存;2、什么叫多线程:一个进程中有多个线程,称为多线程。3、多线程的优势:解决了多部分同时运行的问题,提高效率4、线程的弊端:线程太多会导致效率的降低,因为线程的执行依靠的是CPU的来回切换。5、实现多线程的方法:实现多线程可以通过继承Thread类和实现Runnable接口。

㈥ Android开发java怎么实现多线程压缩文件,求代码事例

既然是java ,就按java的语法 写就行,,,,,,android sdk中有例子,抄一个,搬代码到里面,就可以 在android中测试了~~~~~~~~~~~~~~~~~~~

㈦ linux中我想用jstack捕获java线程,捕获10次,每隔5秒捕获一次并把捕获的生成文件,然后生成压缩包文件

sh脚本,加上定时任务

㈧ java多线程处理大批文件

线程数量一般是个估算值。这个要凭经验来判定。判定规则如下:如果您能保证您的线程程序不会因为等待任何I/O事件产生等待(比如等待网络、等待数据库、等待磁盘),那么应创建CPU进程个数个线程数。如果您的线程程序I/O等待时间和执行时间大致相等,应创建CPU进程数x2个线程数。

㈨ java如何多线程分析大量的压缩文件

public class Test{public static void main(String args[])throws Exception{File file = new File("D:\\Test.java");//Text文件BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件String s = null;while((s = br.readLine())!=null){//使用readLine方法,一次读一行System.out.println(s);}br.close();;}}

㈩ java 如何实现多线程

java中多线程的实现方式有两种,一种是继承java.lang.Thread类,另一种是实现java.lang.Runnable接口。下面是两种方式的简单代码。继承Thread类方式:import java.lang.Thread; //用集成Thread类方式实现多线程。 public class Test{ public static void main(String arg[]){ T t1=new T(); T t2=new T(); //更改新线程名称 t1.setName("t1"); t2.setName("t2"); //启动线程 t1.start(); t2.start(); } } class T extends Thread{ //重写run()方法 public void run(){ System.out.println(this.getName()); } }输出结果为:t1t2实现Runnable接口方式:在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。import java.lang.*; //用实现Runnable接口的方式实现多线程。 public class Test{ public static void main(String arg[]){ T t1=new T(); T t2=new T(); //一定要实例化Thread对象,将实现Runnable接口的对象作为参数传入。 Thread th1=new Thread(t1,"t1"); Thread th2=new Thread(t2,"t2"); //启动线程 th1.start(); th2.start(); } } class T implements Runnable{ //重写run()方法 public void run(){ System.out.println(Thread.currentThread().getName()); } }输出结果为:t1t2public void run()方法是JAVA中线程的执行体方法,所有线程的操作都是从run方法开始,有点类似于main()方法,即主线程。


赞 (0)