JAVA多线程学习一:线程的了解

来源:互联网 发布:ubuntu桌面文件夹路径 编辑:程序博客网 时间:2024/05/29 02:47
我们总听到多线程,好高大上啊这词。首先我们要理解什么是线程,多线程又是啥,它有什么用,能吃吗?

一.线程与进程
说到线程,我们很容易听到一个词是进程。很容易混,我们对比一下就同时了解他们两个就会有不同的理解。
对比如下:

线程:线程是能进行独立运行,独立调度,分派的最基本单位。线程很轻所以开销很小。
一个时间点上只有一个线程在执行,时间运行很快。
线程是一个程序的内部顺序控制流。
(关于一个时间点只有一个线程在执行,我是这么理解的,CPU多核心什么的抛开不谈,内存是公用的,不可能你正在写,别人也在写这不就乱套了吗。所以说一时间点上只有一个线程执行。)

进程:狭义是正在运行的程序的实例,广义就是具有一定独立功能的程序关于某个数据集合的一次运行活动。
(我的理解就是你打开windows的任务管理器,当中的一个进程就是一个程序,你关掉一个,就有一个程序关掉。)

区别一:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程区别二:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(结合区别一,一个进程是拥有独立资源的基本单位,代码和数据空间都是独立的不共享的。)区别三:多进程是指操作系统能同时运行多个任务(程序)区别四:多线程是指在同一程序中有多个顺序流在执行。(区别三结合区别四是结合系统层面说的)

二.JAVA中线程的创建
方法有两种
(1)集成Thread类, 重写run方法
ThreadClass tc = new ThreadClass();
tc.start();

(2)实现Runnable接口, 重写run方法
RunnableIml rb = new RunnableIml();
Thread t = new Thread(rb);
t.start();
(特别提醒这里的run方法是简单的线程调用,不是开启线程,不要与start()方法弄混)
PS:两种方法虽然都是重写run()肯定是方法二更好
实现Runnable接口比继承Thread类所具有的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立

(总结起来就是,JAVA单继承,只能来一个。接口你可以实现一堆,当然是越多越好)

三.线程在JAVA中的使用
(线程状态转化的图很重要)
多看看这个图有助于对线程理解

(看来要分四期总结
二线程了解续,一些方法,代码演示什么的
三多线程同步(难点锁)
四生产者与消费者

0 0
原创粉丝点击