有人可以告诉我如何正确使用单线程与多线程?

时间:2015-11-29 07:22:18

标签: multithreading file-io synchronization java-threads

与使用每个文件的线程相比,我对如何使用单个线程打开和读取多个文件感到困惑。基本上,我与语法混淆,我如何建立可以说50,60甚至100个不同的线程,具体取决于需要读取的文件数量。另外,你能简单解释一下究竟是什么" runnable"装置??

2 个答案:

答案 0 :(得分:0)

当您需要具有大量耗时操作的响应式程序时,首选多线程。如果您的文件操作很耗时,那么您可以使用多线程,以便您的主线程不会无响应,直到操作完成。这个概念广泛用于GUI程序。如果您使用主线程打开和读取多个文件,那么如果您的文件太大,您的程序将无法响应一段时间。在那种情况下,我更喜欢多线程。请参阅这些链接。也许你会从中获得灵感。

http://www.tutorialspoint.com/java/java_files_io.htm

http://beginnersbook.com/2013/03/multithreading-in-java/

http://java2novice.com/java_thread_examples/implementing_runnable/

Runnable表示由Thread执行的Java任务。 java.lang.Runnable是一个接口,只定义了一个名为run()的方法。当使用Thread.start()方法在Java中启动Thread时,它调用Runnable任务的run()方法,该方法在创建期间传递给Thread。 run()方法内部编写的代码由这个新创建的线程执行。由于start()方法在内部调用run()方法,因此在Java程序员中一直存在疑问,为什么不直接调用run()方法。这也被问及Java中start()和run()方法的区别。好吧,当你直接调用Runnable接口run()方法时,不会创建新的Thread,并且通过调用thread来执行run()方法中的任务定义。 Java 1中添加了另一个名为Callable的接口,它也可用于代替Java中的Runnable接口。 Callable在返回计算结果方面提供了Runnable的附加功能。由于run()方法的返回类型为void,因此无法返回有时需要的任何内容。另一方面,Callable接口定义了call()方法,该方法的返回类型为Future,可用于从Java中的Thread返回计算结果。

了解详情:http://java67.blogspot.com/2012/08/what-is-thread-and-runnable-in-java.html#ixzz3src0C72H

答案 1 :(得分:0)

Runnable是类必须在Java中实现的接口,因此它们可以在Thread中执行。基本上,它强制程序员实现线程执行时运行自定义语句所需的方法(void run()) - http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html

要在单个线程中打开多个文件,您的可运行对象将需要访问您打算打开的文件列表。不知道您是打算打开同一组文件(在同一位置)还是动态文件列表,我不会就如何管理该活动提出建议。有效学习此方法的最简单方法是使用可运行类可用的文件集合。

创建一个线程相对简单 - 这是一个类的定义:

public class MyThread扩展Thread {

public void run(){
   System.out.println("MyThread running");
}

}

这个类的实现是thar将启动线程

类HelloWorldApp {     public static void main(String [] args){

     MyThread myThread = new MyThread();
     myThread.start
}

}

创建单独的线程需要创建MyThread类的多个实例 - 每个实例都绑定到一个特定的线程(即:MyThread mythread2,mythread3等)

希望这能让你顺利上路!

相关问题