java 为什么要用线程?为什么要用线程呢在什么时候用到!
大家好,如果您还对java 为什么要用线程不太了解,没有关系,今天就由本站为大家分享java 为什么要用线程的知识,包括为什么要用线程呢在什么时候用到!的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
在用java开发程序中什么时候应用到线程
一般需要独立运行某个东西的时候会用到线程
我用过的就是端口监听的时候
比如说你的程序在200端口上设置另一个监听,当有数据通过这个端口传输的时候就会被监听程序所获取但是如何保证实时监听?这个就需要有个线程独立的来执行这个工作保持监听的状态。
再比如说你需要做一个任务处理的程序当数据库中有新任务时候就进行处理/或者XX路径下出现新的文件就进行处理,这个时候也需要用到线程来实时扫描数据库或者是文件路径,来保证任务能够得到及时的处理
为什么要用线程呢在什么时候用到!
呵呵想理解多线程你就得搞清楚什么是并发什么是并行,概念:在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(parallel)。我也有段时间纠结于这里,无论如何我必须得给你明确一点:在某一个时间点,一个CPU(单)只会运行某一个进程里的单个线程,所以我们经常称之为并发,说道同步机制,其实多线程并未真正实现微观意义上的同步,进程是一个运行单元,线程则是更小的运行单元,简而言之,就是进程细分成多个线程,譬如:一个进程A运行需要1s,它就会切换到进程B,但是实现多线程机制后,进程A细化成10个线程,每个线程只需运行0.1s,当然B线程也一样,这就出现,线程之间的切换时间更短,从宏观上看就出现同步幻象了。所以学习多线程你得真正理解所谓的同步并发,并不是真正的“同步”。当你理解这些的时候,你就初略的感觉什么时候该使用多线程机制,其实你的电脑每个程序都至少有一个主线程,那个管理器中的每一个进程,其实内部包含若干线程,每个时间点都是某个程序进程中的某个线程在运行。这些都是我的理解,还有不懂的请继续提出,我会尽量帮你解答。
线程在java编程中的作用
线程在java编程中的作用可以实现多个任务同时进行。java创建线程的方式最常用的有两种。
1、第一种是创建Thread子类的一个实例并重写run方法,run方法会在调用start()方法之后被执行。例子如下:
publicclassMyThreadextendsThread{
publicvoidrun(){
System.out.println("MyThreadrunning");
}
}
MyThreadmyThread=newMyThread();
myTread.start();
2、第二种编写线程执行代码的方式是新建一个实现了java.lang.Runnable接口的类的实例,实例中的方法可以被线程调用。下面给出例子:
publicclassMyRunnableimplementsRunnable{
publicvoidrun(){
System.out.println("MyRunnablerunning");
}
}
Threadthread=newThread(newMyRunnable());
thread.start();
什么是线程池,如何使用,为什么要用
线程池,thread pool,是一种线程使用模式,线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。
功能:应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待事件发生。其他线程可能进入睡眠状态,并且仅定期被唤醒以轮循更改或更新状态信息,然后再次进入休眠状态。
为了简化对这些线程的管理,.NET框架为每个进程提供了一个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成时,线程池中的辅助线程会执行回调函数。线程池中的线程由系统管理,程序员不需要费力于线程管理,可以集中精力处理应用程序任务。
扩展资料:
应用范围
1、需要大量的线程来完成任务,且完成任务的时间比较短。 WEB服务器完成网页请求这样的任务,使用线程池技术是非常合适的。因为单个任务小,而任务数量巨大,你可以想象一个热门网站的点击次数。但对于长时间的任务,比如一个Telnet连接请求,线程池的优点就不明显了。因为Telnet会话时间比线程的创建时间大多了。
2、对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。
3、接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用。突发性大量客户请求,在没有线程池情况下,将产生大量线程,虽然理论上大部分操作系统线程数目最大值不是问题,短时间内产生大量线程可能使内存到达极限,并出现"OutOfMemory"的错误。
参考资料来源:百度百科—线程池
关于java 为什么要用线程的内容到此结束,希望对大家有所帮助。