A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangning9130 中级黑马   /  2013-9-13 13:08  /  1919 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

视频看到多线程的问题,,有些不懂,请大家帮忙解决一下,各位方便的话讲解一下,主要是Thread这个类,,还有sleep这个方法,
在就是关于它的工作原理。。谢谢

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 qqhao01 于 2013-9-13 14:07 编辑

你先要知道线程是进程中的内容,每一个应用程序里面至少都有一个线程,因为线程就是进程中的一个独立的控制单元或叫执行路径。
多线程就是多个控制单元。怎么让它们一起运行呢?java就提供了一个Thread类
在Thread类中有一个run方法,它是用于存储线程要运行的代码。
你把一个一个的要运行的线程放进去。之后调用线程的start方法,它就会启动线程,调用run方法,run方法的功能就会执行这些线程,让cpu在做着快速的切换,看上去就像是同时运行。

sleep方法需要指定睡眠时间,单位是毫秒。就是你用了这个方法运行到这的线程就会睡着,时间你定义,就像闹钟,你定义的时间到了,他就被叫醒,在往下运行。
上面这些是我自己的一些看法

下面的是我看视频里的 希望可以帮到你
继承Thread类是创建线程的方式之一。
步骤:
1.定义类继承Thread
2.复写Thread类中的run方法
        目的:将自定义的代码存储在run方法中,让线程运行。
3.调用线程的start方法//开启线程并执行该线程的run方法
        该方法两个作用:启动线程,调用run方法
多线程运行过程:
在某一个时刻,只有一个程序在运行。
cpu在做着快速的切换,以达到看上去是同时运行的效果。
我们可以形象的把多线程的运行行为看做在互相抢夺cpu的执行权。
这就是多线程的一个特性:随机性。谁抢到谁执行,至于执行多长,cpu说的算。

为什么要覆盖run方法呢?
Thread类用于描述线程。
该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。
也就是说Thread类中的run方法,用于存储线程要运行的代码。有了run方法才能运行线程。

一般鼓励使用第二种方法(实现Runnable接口),因为Java里面只允许单一继承,但允许实现多个接口。第二个方法更加灵活。

回复 使用道具 举报
对于你对多线程概念有点模糊,所以先简单的来介绍一下多线程问题。
首先多线程就是电脑处理程序的执行问题,例如:你先点开一个音乐播放器,听着音乐,然后再打开word编写文档。那么这就是一个多线程的例子。
那么Java怎么来编写多线程呢?
那么就要用到Thread这个类。Thread类就是JAVA用于编写多线程的类集。同学理解了吗?
sleep()方法只是Thread类中的一个方法。
让当前正在执行的线程休眠(暂停执行),比如:你正在吃饭,你的同学叫你去玩,你让 他等一会,对于他来说,就要等你,那么他就是在sleep()你。
这下你理解了吗?
多想一想,让java和生活联系起来,会更简单的。
回复 使用道具 举报
线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。

定义一个线程(Defining a Thread)有两种方法:

继承java.lang.Thread类和实现java.lang.Runnable接口;

Thread.sleep()/sleep(long millis)方法:

当前线程睡眠/millis的时间(millis指定睡眠时间是其最小的不执行时间,因为sleep(millis)休眠到达后,无法保证会被JVM立即调度);sleep()是一个静态方法(static method) ,所以他不会停止其他的线程也处于休眠状态;线程sleep()时不会失去拥有的对象锁。 作用:保持对象锁,让出CPU,调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留一定的时间给其他线程执行的机会;

......
回复 使用道具 举报
1.定义类继承Thread
2.覆盖Thread类中的run方法
   将自定义的代码存储在run方法中,让线程运行。
3.调用线程的start方法
   该方法两个作用:启动线程,调用run方法

状态.png (45.25 KB, 下载次数: 34)

状态图

状态图
回复 使用道具 举报
本帖最后由 袁晓俊 于 2014-5-16 14:13 编辑

在实践编程中运用还是有很大的困难,没有遇到过实例,要是有c#的一个线程实例就好了,,,,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马