线程用途

问题描述

现在我已经把java基础知识看了一遍,但还是不理解线程到底什么时候用,怎么用.请大家指点一下,多谢!(前提,我想往j2ee发展!)

解决方案

解决方案二:

Java平台从开始就被设计成为多线程环境。在你的主程序执行的时候,其它作业如碎片收集和事件处理则是在后台进行的。本质上,你可以认为这些作业是线程。它们正好是系统管理线程,但是无论如何,它们是线程。线程使你能够定义相互独立的作业,彼此之间互不干扰。系统将交换这些作业进或出CPU,这样(从外部看来)它们好象是同时运行的。 在你需要在你的程序中处理多个作业时,你也可以使用多个进程。这些进程可以是你自己创建的,你也可以操纵系统线程。  你进行这些多作业处理,要使用几个不同的类或接口:   java.util.Timer类   javax.swing.Timer类   Thread类   Runnable接口  对于简单的作业,通常需要重复的,你可以使用java.util.Timer类告诉它“每半秒钟做一次”。注意:大多数系统例程是使用毫秒的。半秒钟是500毫秒

解决方案三:
简单的说,线程就是让程序可以同时(宏观上的)执行多个任务,
解决方案四:
楼上们的回答都是正确的。我多说句,可以这样理解,如果不用线程,那你的程序中多个任务只能顺序执行,一个任务不完成,下一个任务就不可能得到执行。但这就有一个问题,比喻说,我现在想导入一个很大文件到软件并加以分析,但短时间内这个任务难以完成。可是在这过程中,我又想利用软件干别的事情,显然这里就要用到线程了:用一个线程导入文件,其他的线程则完成用户另外的请求。
解决方案五:
楼上说的都很好。就算你对线程的概念理解不深也不影响你往j2ee发展。你可以往后继续学。等以后遇到问题,时间长了,接触多了,有时问题就会迎刃而解。不必为一个问题而卡在这里止步不前。往下走吧。一路顺风。。。
解决方案六:
线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源
解决方案七:
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。在单CPU系统中,系统把CPU的时间片按照调度算法分配给各个线程,因此各线程实际上是分时执行的,在多CPU的WindowsNT系统中,同一个程序的不同线程可以被分配到不同的CPU上去执行。由于一个程序的各线程是在相同的地址空间运行的,因此设及到了如何共享内存,如何通信等问题,这样便需要处理各线程之间的同步问题,这是多线程编程中的一个难点。
解决方案八:
线程没啥用。因为你不用它,它也在被使用。Java本来就是工作在多线程模式下,只要你在写Java程序,你的程序就是由多个线程组成的。Ok,知道线程有啥用了没?还不知道?第一句就已经告诉你了不是?线程没啥用。线程就和空气一样,没啥用。
解决方案九:
引用7楼mouyong的回复:

线程没啥用。因为你不用它,它也在被使用。Java本来就是工作在多线程模式下,只要你在写Java程序,你的程序就是由多个线程组成的。Ok,知道线程有啥用了没?还不知道?第一句就已经告诉你了不是?线程没啥用。线程就和空气一样,没啥用。

也不能说没啥用。我们写程序有时候要考虑到自己程序内部的多线程。比如关公战秦琼。关公每1秒种攻击一次,秦琼每1.5秒攻击一次。我们可以用线程实现:在关公攻击的时候把CPU让给关公,在秦琼攻击的时候把CPU让给秦琼。

时间: 2024-08-24 05:30:47

线程用途的相关文章

Java线程池如何体现自己的用途

Java线程池就像数据库连接池一样,是一个对象池.我们在使用的时候需要不断的学习,这样才能不断的适应相关语言技术的变化.所有的对象池都有一个共同的目的,那就是为了提高对象的使用率,从而达到提高程序效率的目的. 比如对于Servlet,它被设计为多线程的(如果它是单线程的,你就可以想象,当1000个人同时请求一个网页时,在第一个人获得请求结果之前,其它999个人都在郁闷地等待),如果为每个用户的每一次请求都创建一个新的线程对象来运行的话,系统就会在创建线程和销毁线程上耗费很大的开销,大大降低系统的

Java线程池架构原理和源码解析(ThreadPoolExecutor)

在前面介绍JUC的文章中,提到了关于线程池Execotors的创建介绍,在文章:<java之JUC系列-外部Tools>中第一部分有详细的说明,请参阅: 文章中其实说明了外部的使用方式,但是没有说内部是如何实现的,为了加深对实现的理解,在使用中可以放心,我们这里将做源码解析以及反馈到原理上,Executors工具可以创建普通的线程池以及schedule调度任务的调度池,其实两者实现上还是有一些区别,但是理解了ThreadPoolExecutor,在看ScheduledThreadPoolExe

java线程阻塞中断和LockSupport的常见问题

上周五和周末,工作忙里偷闲,在看java cocurrent中也顺便再温故了一下Thread.interrupt和java 5之后的LockSupport的实现.   在介绍之前,先抛几个问题.   Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常? Thread.interrupt()会中断线程什么状态的工作? RUNNING or BLOCKING? 一般Thread编程

Java线程:volatile关键字

谈及到volatile关键字,不得不提的一篇文章是:<Java 理论与实践: 正确使用 Volatile 变量>,这篇文章对volatile关键字的用法做了相当精辟的阐述. 之所以要单独提出volatile这个不常用的关键字原因是这个关键字在高性能的多线程程序中也有很重要的用途,只是这个关键字用不好会出很多问题. 首先考虑一个问题,为什么变量需要volatile来修饰呢? 要搞清楚这个问题,首先应该明白计算机内部都做什么了.比如做了一个i++操作,计算机内部做了三次处理:读取-修改-写入. 同

浅谈Javascript线程及定时机制

  这篇文章主要介绍了浅谈Javascript线程及定时机制的相关资料,需要的朋友可以参考下 setTimeout.setInterval的使用 Javascript api文档中定义setTimeout和setInterval第二个参数意义分别为间隔多少毫秒后回调函数被执行和每隔多少毫秒回调函数被执行.但随着工作经验的积累,我们发现事实并非如此. 比如 ? 1 2 3 4 5 div.onclick=function(){ setTimeout(function(){ document.get

MFC 多线程及线程同步

一.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等.用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等.但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务. 在MFC中,一般用全局函数Afx

.Net线程问题解答

转自 http://www.cnblogs.com/yizhu2000/archive/2008/01/03/1011958.html 把遇到过的对.Net线程的一些问题和误解集中起来和大家分享,也希望大家能一起补充,热烈欢迎讨论 目录   基础篇 怎样创建一个线程 受托管的线程与 Windows线程 前台线程与后台线程 名为BeginXXX和EndXXX的方法是做什么用的 异步和多线程有什么关联 WinForm多线程编程篇 我的多线程WinForm程序老是抛出InvalidOperationE

iOS中线程Call Stack的捕获和解析(一)

http://blog.csdn.net/jasonblog/article/details/49909209这里对上个月做的一个技术项目做部分技术小结,这篇文章描述的功能和我们在使用Xcode进行调试时点击暂停的效果类似. 一.获取任意一个线程的Call Stack 如果要获取当前线程的调用栈,可以直接使用现有API:[NSThread callStackSymbols]. 但是并没有相关API支持获取任意线程的调用栈,所以只能自己编码实现. 1. 基础结构 一个线程的调用栈是什么样的呢? 我

线程锁实例2---读写加锁实例

#include <stdio.h> #include <pthread.h> #include <unistd.h> struct student { int a ; int b ; int c ; int d ; int e ; int f ; }; char stu[6] = {10,10,10,10,10,10}; //初始化一个线程mutex锁 主要用途是防止资源访问竞争 pthread_mutex_t Mutex = PTHREAD_MUTEX_INITIA