LieBrother

当才华撑不起野心时,应该静下心来学习;当能力驾驭不了目标时,应该沉下心来历练。


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

线程最最基础的知识

发表于 2019-09-17   |     |   阅读次数

Java 多线程系列文章第 5 篇。

什么是线程

试想一下没有线程的程序是怎么样的?百度网盘在上传文件时就无法下载文件了,得等文件上传完成后才能下载文件。这个我们现在看起来很反人性,因为我们习惯了一个程序同时可以进行运行多个功能,而这些都是线程的功劳。

之前的文章 进程知多少 中讲到,为了实现多个程序并行执行,引入了进程概念。现在引入线程是为了让一个程序能够并发执行。

线程的组成

线程ID:线程标识符。

当前指令指针(PC):指向要执行的指令。

寄存器集合:存储单元寄存器的集合。

堆栈:暂时存放数据和地址,一般用来保护断点和现场。

线程与进程区别

线程和进程之间的区别,我觉得可以用这个例子来看出两者的不同,进程就是一栋房子,房子住着 3 个人,线程就是住在房子里的人。进程是一个独立的个体,有自己的资源,线程是在进程里的,多个线程共享着进程的资源。

线程状态

我们看到 Java 源代码里面,线程状态的枚举有如下 6 个。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public enum State {

//新建状态
NEW,

//运行状态
RUNNABLE,

//阻塞状态
BLOCKED,

//等待状态
WAITING,

//等待状态(区别在于这个有等待的时间)
TIMED_WAITING,

//终止状态
TERMINATED;
}

下面给这 6 个状态一一做下解释。

NEW:新建状态。在创建完 Thread ,还没执行 start() 之前,线程的状态一直是 NEW。可以说这个时候还没有真正的一个线程映射着,只是一个对象。

RUNNABLE:运行状态。线程对象调用 start() 之后,就进入 RUNNABLE 状态,该状态说明在 JVM 中有一个真实的线程存在。

BLOCKED:阻塞状态。线程在等待锁的释放,也就是等待获取 monitor 锁。

WAITING:等待状态。线程在这个状态的时候,不会被分配 CPU,而且需要被显示地唤醒,否则会一直等待下去。

TIMED_WAITING:超时等待状态。这个状态的线程也一样不会被分配 CPU,但是它不会无限等待下去,有时间限制,时间一到就停止等待。

TERMINATED:终止状态。线程执行完成结束,但不代表这个对象已经没有了,对象可能还是存在的,只是线程不存在了。

线程既然有这么多个状态,那肯定就有状态机,也就是在什么情况下 A 状态会变成 B 状态。下面就来简单描述一下。

结合下图,我们 new 出线程类的时候,就是 NEW 状态,调用 start() 方法,就进入了 RUNNABLE 状态,这时如果触发等待,则进入了 WAITING 状态,如果触发超时等待,则进入 TIMED_WAITING 状态,当访问需要同步的资源时,则只有一个线程能访问,其他线程就进入 BLOCKED 状态,当线程执行完后,进入 TERMINATED 状态。

图片来源于网路,侵删

其实在 JVM 中,线程是有 9 个状态,如下所示,有兴趣的同学可以深入了解一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
javaClasses.hpp
enum ThreadStatus {
NEW = 0,
RUNNABLE = JVMTI_THREAD_STATE_ALIVE + // runnable / running
JVMTI_THREAD_STATE_RUNNABLE,
SLEEPING = JVMTI_THREAD_STATE_ALIVE + // Thread.sleep()
JVMTI_THREAD_STATE_WAITING +
JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +
JVMTI_THREAD_STATE_SLEEPING,
IN_OBJECT_WAIT = JVMTI_THREAD_STATE_ALIVE + // Object.wait()
JVMTI_THREAD_STATE_WAITING +
JVMTI_THREAD_STATE_WAITING_INDEFINITELY +
JVMTI_THREAD_STATE_IN_OBJECT_WAIT,
IN_OBJECT_WAIT_TIMED = JVMTI_THREAD_STATE_ALIVE + // Object.wait(long)
JVMTI_THREAD_STATE_WAITING +
JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +
JVMTI_THREAD_STATE_IN_OBJECT_WAIT,
PARKED = JVMTI_THREAD_STATE_ALIVE + // LockSupport.park()
JVMTI_THREAD_STATE_WAITING +
JVMTI_THREAD_STATE_WAITING_INDEFINITELY +
JVMTI_THREAD_STATE_PARKED,
PARKED_TIMED = JVMTI_THREAD_STATE_ALIVE + // LockSupport.park(long)
JVMTI_THREAD_STATE_WAITING +
JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +
JVMTI_THREAD_STATE_PARKED,
BLOCKED_ON_MONITOR_ENTER = JVMTI_THREAD_STATE_ALIVE + // (re-)entering a synchronization block
JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,
TERMINATED = JVMTI_THREAD_STATE_TERMINATED
};

Java 线程实现

下面讲一讲在 Java 中如何创建一个线程。众所周知,实现 Java 线程有 2 种方式:继承 Thread 类和实现 Runnable 接口。

继承 Thread 类

继承 Thread 类,重写 run() 方法。

1
2
3
4
5
6
7
8
class MyThread extends Thread {

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

}

实现 Runnable 接口

实现 Runnable 接口,实现 run() 方法。

1
2
3
4
5
6
7
class MyRunnable implements Runnable {

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

}

这 2 种线程的启动方式也不一样。MyThread 是一个线程类,所以可以直接 new 出一个对象出来,接着调用 start() 方法来启动线程;而 MyRunnable 只是一个普通的类,需要 new 出线程基类 Thread 对象,将 MyRunnable 对象传进去。

下面是启动线程的方式。

1
2
3
4
5
6
7
8
9
10
11
12
public class ThreadImpl {

public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread myRunnable = new Thread(new MyRunnable());
System.out.println("main Thread begin");
myThread.start();
myRunnable.start();
System.out.println("main Thread end");
}

}

打印结果如下:

1
2
3
4
main Thread begin
main Thread end
MyThread
MyRunnable

看这结果,不像咱们之前的串行执行依次打印,主线程不会等待子线程执行完。

敲重点:不能直接调用 run(),直接调用 run() 不会创建线程,而是主线程直接执行 run() 的内容,相当于执行普通函数。这时就是串行执行的。看下面代码。

1
2
3
4
5
6
7
8
9
10
11
12
public class ThreadImpl {

public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread myRunnable = new Thread(new MyRunnable());
System.out.println("main Thread begin");
myThread.run();
myRunnable.run();
System.out.println("main Thread end");
}

}

打印结果:

1
2
3
4
main Thread begin
MyThread
MyRunnable
main Thread end

从结果看出只是串行的,但看不出没有线程,我们看下面例子来验证直接调用 run() 方法没有创建新的线程,使用 VisualVM 工具来观察线程情况。

我们对代码做一下修改,加上 Thread.sleep(1000000) 让它睡眠一段时间,这样方便用工具查看线程情况。

调用 run() 的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class ThreadImpl {

public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.setName("MyThread");
Thread myRunnable = new Thread(new MyRunnable());
myRunnable.setName("MyRunnable");
System.out.println("main Thread begin");
myThread.run();
myRunnable.run();
System.out.println("main Thread end");
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}

class MyThread extends Thread {

@Override
public void run() {
System.out.println("MyThread");
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}

class MyRunnable implements Runnable {

public void run() {
System.out.println("MyRunnable");
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}

运行结果:

1
2
main Thread begin
MyThread

只打印出 2 句日志,观察线程时也只看到 main 线程,没有看到 MyThread 和 MyRunnable 线程,印证了上面咱们说的:直接调用 run() 方法,没有创建线程。

下面我们来看看有
调用 start() 的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ThreadImpl {

public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.setName("MyThread");
Thread myRunnable = new Thread(new MyRunnable());
myRunnable.setName("MyRunnable");
System.out.println("main Thread begin");
myThread.start();
myRunnable.start();
System.out.println("main Thread end");
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}

运行结果:

1
2
3
4
main Thread begin
main Thread end
MyThread
MyRunnable

所有日志都打印出来了,并且通过 VisualVM 工具可以看到 MyThread 和 MyRunnable 线程。看到了这个结果,切记创建线程要调用 start() 方法。

今天就先讲到这,继续关注后面的内容。

推荐阅读

线程最最基础的知识

老板叫你别阻塞了

吃个快餐都能学到串行、并行、并发

泡一杯茶,学一学同异步

进程知多少?

设计模式看了又忘,忘了又看?

后台回复『设计模式』可以获取《一故事一设计模式》电子书

觉得文章有用帮忙转发&点赞,多谢朋友们!

LieBrother

读书 | 巴比伦最富有的人(内含思维导图)

发表于 2019-09-10   |     |   阅读次数

《巴比伦最富有的人》这本书是在看《富爸爸与穷爸爸》这本书时,作者推荐的一本书,之前有个习惯就是看一本书,把书中推荐的书籍列成待读清单,也算是对广大书籍做一个筛选,遗憾的是之前记录下来后就没去看,近来重新捡起读书这项小事(很小的事却很难坚持)。

最近可以坚持下来是因为做了公众号,接触了身边公众号的朋友,都非常优秀,也明白一个道理:要输出(写文章),就需要有很多输入(学习),可能输入 100,只能输出 20,要提高输出,先扩大输入。自己也下意识地扩大了输入范围,从看技术博客、技术书、公众号文章,扩展到看各种类型的书、看电影、思考周围发生的各种事情,甚至把吃饭当做一种体验,不再只喜欢吃熟悉的东西,而是尝试吃各种没吃过的食物,下没下过的馆子。扯远了,回到《巴比伦最富有的人》这本书。

这本书第一章就给我一个很大的思想冲击,就是 2 个人物,他们很有想法,也很努力的干活,但是却不富有。一个叫班瑟,他一直不辞劳苦地制造巴比伦最好的车,所有的心思都用在了这件事上,他成功了,造出了巴比伦最好的车;一个叫库比,他想成为出色的乐师,所以一直努力地练习演奏,最终也做到了。他们有非常好的想法,或者说是梦想,也很努力地去做,也最终实现了梦想,但却得不到财富。原因在于这里面的出发点跟财富无关,做最好的车 != 获得财富,成为最出色的乐师 != 获得财富。如果想要有财富,那需要像做最好的车、当出色的乐师一样去寻找怎么做,寻找怎么获得财富。

接下来的文章就是通过一个一个的小故事去讲述怎么获取财富。班瑟、库比和其他没有获得财富的人去请教了巴比伦最富有的人:阿卡德。下面给大家列举一下文中的一些要点:7 个获取财富的诀窍 和 5 个黄金法则。更多的故事情节,大家可以去看看全书,很推荐的一本书。

阿卡德给穷人讲了 7 个获得财富的诀窍:

  1. 让你的钱袋鼓起来。
    先为自己存钱,比如把每个月工资的十分之一存起来。

  2. 控制你的开支。
    如果你是月光族,那么第一项存十分之一的钱就会让你去考虑怎么控制开支,怎么才能把不必要的开支项目去掉;如果你不是月光族,那么第一项存十分之一的钱是不是很容易达到,如果很容易,那能不能存更多的钱,反正就是学会节支,先让自己有存款。

  3. 让你的金子增值。
    经过一段时间的存钱,你应该积累了一些钱,这时你会去考虑怎么让它能带来更多的钱,比如会去衡量是放在家里好、还是放在银行好、还是投理财产品好?等等。

  4. 避免失去你的财富。
    想让钱生钱的想法是好的,但是却有很多陷阱,这时就要学会避免失去这些钱。最好的方法是:请教那些投资获利有丰富经验的人

  5. 使你的房子成为一项有益的投资。
    积攒了一些钱之后,需要投资自己的房子,房子会带来很多好处,给自己的家庭带来安全感,满足自己更多的欲望。

  6. 确保未来的收入。
    有了一些财富之后,要为以后的日子做准备,为老人和家人做好一些准备,比如给老人买一些健康保险等等。

  7. 增强你自己的赚钱能力。
    继续增强赚钱的能力。这一点可能会戳中不少人的心,因为当你有了财富之后,可能会觉得这些钱这辈子够用了,要享受当前拥有的,然后渐渐失去了赚钱的动力,也就会丧失赚钱的能力。要增强赚钱的欲望,欲望必须具体而强烈;提高自己的能力,不断学习,增加自己的智慧。

阿卡德给儿子的 5 个黄金法则:

  • 法则一:一个人只要坚持从他的收入中拿出至少十分之一用来为他的将来和他的家人创造财富,金子就会源源不断、越来越多地流入他的手中。

  • 法则二:金子会为那些懂得如何使用它们的人忠实而勤恳地工作,像田地里的牲口一样为主人带来更多的财富。

  • 法则三:那些在投资的时候谨慎行事、懂得向行家求教的人才能牢牢地保护好自己的金子。

  • 法则四:那些对自己不了解的生意投资,或者不听从行家建议的人将失去他们的金子。

  • 法则五:不现实地投资、听信骗子的花言巧语,以及轻信自己无知幻想的人都会在投资中失去自己的金子。

我把每章的重点知识都记录在思维导图,是故事型的书籍,所以只是记录了一些要点,喜欢的可以在公众号后台回复『巴比伦最富有的人』获取到思维导图原件。

巴比伦最富有的人

最后,希望每个朋友都能成为有钱银!

推荐阅读

吃个快餐都能学到串行、并行、并发

泡一杯茶,学一学同异步

进程知多少?

设计模式看了又忘,忘了又看?

后台回复『设计模式』可以获取《一故事一设计模式》电子书

觉得文章有用帮忙转发&点赞,多谢朋友们!

LieBrother

『电影』遗愿清单

发表于 2019-09-01   |     |   阅读次数

遗愿清单

电影简述

遗愿清单里讲的是 2 位得了癌症的老人在一间病房发生的是事情。一位是黑人,名叫卡特,他来自一个相处非常融洽的家庭,一位是白人,名叫爱德华,他是一个富商,结果几次婚,但都离婚了。

他们先后得了癌症进入了同一间病房,富人肯定不愿意有他人和他共处一间病房,但是他没法改变,因为医院就是他开的,规定是他开创的,并且外面的人都很反对这种规定,他不能自己住一间来打自己的脸。所以他们就这样开始相处。

一开始富人还很淡定,化疗前还吃了很多美食,经历了第一次化疗后,富人吐了一整夜,终于感受到这种煎熬了。接下来的日子就是爱德华化疗,卡特暗自关注他的一举一动,卡特化疗,爱德华暗自关注他的一举一动,互相关注对方化疗后的煎熬。在没有煎熬的日子里就一起打牌,几次化疗后,俩人检查报告出来了,结果是:卡特只剩下半年时间,爱德华剩下半年到一年的时间。得到检查报告后,显然他们都很沮丧,卡特拿了笔在写“遗愿清单”,这个是他大一的哲学老师给他们布置过的一个人生规划作业,把这辈子想做的事情列下来。当初他写了赚一百万美元,成为首位黑人总统这些事情,而现在他在面对死亡时想重新写这份清单,他写了如下清单:

  1. 出于善意帮助陌生人
  2. 笑到流眼泪
  3. 开一次野马跑车
    …

爱德华了解到后,也写下了他的清单:

  1. 亲吻世界上最漂亮的女生
  2. 刺一个纹身
  3. 跳一次伞
    …

在爱德华的怂恿下,他们开始了执行他们清单上的每一件事。

首先就是去跳伞,接着开野马跑车,去金字塔(这期间,爱德华透露出他有个女儿的消息,而且他和女儿关系不好,互不来往),去泰姬陵,去喜马拉雅山(因为风暴,没去爬山)。在卡特的组织下,他将爱德华带到他女儿家,想让爱德华和女儿重归于好,不料却遭到爱德华的强烈抵触,最后不欢而散,卡特回到了自己的家庭,结束了这次遗愿清单之旅。

回到家后,卡特和家人聚餐,聚完餐要睡觉时突然病发,又进入医院治疗,这时癌细胞已经扩散到全身,命在旦夕。而他还有 2 个清单未完成,就是:笑到流眼泪和出于善意帮助别人。

作为生命最后时光相处的朋友,爱德华得知消息后立马赶到医院,卡特即将做手术,卡特递了一张猫屎咖啡介绍给爱德华(爱德华很喜欢喝咖啡),里面讲是猫吃了咖啡豆后排出来的咖啡豆制作成这种咖啡,这时俩人哈哈大笑,卡特向爱德华要了那张清单,划掉笑到流眼泪。卡特写了一封信给爱德华,放在卡特妻子那,是打算卡特去世后再给爱德华,卡特妻子没有按照丈夫吩咐的,直接拿给爱德华。信里面对上次不欢而散表示道歉,并让爱德华去找他生命中的快乐。爱德华由此自己去找了他女儿,冲破他们过去一段时间的沉静,重归于好,在和他孙女玩时,亲吻了他孙女,而后他划掉了亲吻世界上最漂亮的女生。

爱德华在葬礼中发表悼词,感谢卡特拯救了他的生活(让他得以和女儿重归于好),这时他拿起清单,划掉卡特写的那行:出于善意帮助陌生人。

结局:两位主角相继病逝,最终他们的骨灰被爱德华助手放在了珠穆朗玛峰,完成他们最后一个清单:爬珠穆朗玛峰。

感受

还记得乔布斯曾经说过:他的每一天都当做生命中最后一天来过。罗胖也讲过:人这一生,最后留下的是墓碑上怎么描述你。

在面对死亡时,我们每个人如何去总结这一生,我们会有哪些遗憾?有那么一个故事:一位 80 岁的老太太后悔在 60 岁的时候没学钢琴。种一棵树最好的时间是十年前,其次是现在!

列下想做的事情,开始干起来!!!

『电影』美丽人生

发表于 2019-08-29   |     |   阅读次数

美丽人生

电影简述

电影是以一个滑稽搞笑的方式来演绎一份美好的爱情故事,主人翁以他乐观的性格捕获了美女的芳心以及给他儿子带来了游戏般的童年。

圭多是一个犹太青年,邂逅了青年教师多拉,每次见到多拉,都会大声打招呼:“早安!公主!”经历了很多啼笑皆非的场合,和多拉产生了感情,多拉放弃一段即将到来的婚姻,和圭多在一起。

并不富裕的圭多为啥能赢得多拉的芳心呢?我猜是他的生活态度,以及对待多拉的方式,他把多拉当做公主一般,每个女孩子心里都有个公主梦,正是圭多能给予的。

他们一起生活,虽然不富裕,但很是温馨。圭多的这份积极乐观的生活态度不仅仅影响他的妻子多拉,还深深影响他的儿子。

在法西斯政权下,圭多和他儿子作为犹太人被强行送往犹太人集中营,他的妻子多拉虽没有犹太人血统,但因为丈夫和儿子在集中营,她也主动请示要去集中营。

在去集中营的途中,恰巧当天是儿子的生日,儿子不明白发生了什么事,问了他爸爸要去哪里。圭多便跟他说:你不是一直说要去旅行,为了这次旅行,他筹备了几个月,还不能揭晓去哪个地方。并以他夸张的笑容去掩盖现实的一切。

在集中营中,几十个人住在一起,环境非常恶劣。圭多给儿子讲了大家来这里是来玩游戏,得到积分,谁先得到 1000 分就可以得到一等奖:坦克一辆。为了圆他的谎,官员在找一个会德语来做翻译的犹太人时,圭多并不会德语,但他还是上去了,并把官员所说的全部翻译成获取积分的游戏规则,儿子这才当真。

每天圭多都很辛苦,搬铁块去烧等等各种苦力活,有一次他儿子跑出来,见到圭多,很惊讶爸爸在做的事情,圭多跟他解释道:他在做坦克。。。。。。。每天圭多都和他儿子计算已经获得的分数,让他儿子即使在集中营这么恶劣的环境还能过得很开心,每天都有期盼的事。还有一次路过广播间,见到没人,他跑进去喊了那句熟悉的“早安!公主!”,他老婆多拉那会在干杂活,听到了这句,非常的兴奋。圭多就是这样,不放弃任何机会去让他的家庭充满欢乐。还有一次,去做服侍时,他让儿子混入法西斯的小孩群里,去吃了一份好的晚餐。

在法西斯政权即将倾覆,纳粹的集中营要接受接受最后的清理,他带儿子跑出去,为了救他妻子,他让儿子躲进一个铁箱子,并告知:不用出来,直到一个人都没有。自己跑去找他妻子,最终没找到还被纳粹抓到,被枪杀了。

第二天,纳粹清理后走了。小孩子走出来,这时美军刚好赶到,一辆坦克缓缓地开过来,小孩很是惊讶,真的如他父亲说的,他赢得了坦克。一位帅气的美军把他抱到坦克上,载着他开出集中营,在路途中,小孩看到他妈妈,跑到他妈妈怀里大声喊:妈妈,我们赢了。

全剧终。。。

感受

在黑暗的社会里,不管外面的世界多糟,主人翁像漏斗一样,把一切不好的过滤掉,并尽他所能的把一切转为美好的事情,展现给他的妻子和儿子,为他们营造温馨快乐的环境,使他们对未来充满希望。

反观咱们现实生活中,要做到这一点不容易,很多人则相反的,在外头当沙包,回到家则把家庭当沙包,把外头受的气发泄在自己的家庭里。我想我有点像这类人,把工作中的低落情绪带到家庭里,最近在反省,也在做改变,尝试去把好的一方面展现给家庭,这部电影也给了我很大的启示,生活是自己给的,你想活成怎么样由你自己决定。想明白工作是为了什么?不就是为了更好的生活,既然想要更好的生活,那就更好地去生活。

很推荐大家看看这部电影!大家有什么让生活更好的技巧也可以留言分享。

你的人生应该如此美丽

『电影』追梦赤子心

发表于 2019-08-27   |     |   阅读次数

追梦赤子心



第一听到这首歌时的心理“这 TM 唱的是什么?”

问号脸

直到有一天去朋友家听到这首歌『真香』。

真香

有人说年少时听歌听的是曲,长大后听歌听的是词。我想:可能词能描绘出情景,更容易去反应情感。

电影简述

公开梦想

这部电影是从真实的故事改编过来的。主人翁 Rudy 全家人都是圣母大学橄榄球队的球迷,Rudy 从小是家里个头最小的,小小的身躯拥有大大的梦想,在一次看球赛的过程中他向全家人透露了自己的梦想:长大要为圣母大学橄榄球踢球。父亲摸摸了他的头,全家人不以为然,唯有他的好友 Peter 一直记着他的这个梦。

坚持持有梦想

高中毕业后,成绩不佳的 Rudy 和他的兄弟一样,待在钢铁厂里打工,在他 22 岁的时候,他的好友 Peter 送了他一件圣母大学橄榄球队服,并说了一句能激起 Rudy 情绪的话:你 TM 天生就是穿这件衣服的料!Rudy 非常感激 Peter 一直把他的话记在心里并当真了,Peter 回了一句他爸经常说的话:梦想使生活得以忍受。

决定追梦,放弃所拥有的

过了不久,不幸的事情发生,Peter 在一次生产事故中身亡,这世界上或者说是 Rudy 的世界里,也就再也没有人相信他能在圣母大学踢球。可能是这种孤独感或者是觉得意外随时都可能发生,人随时可能离开,让他决定去追逐那个梦想。

追梦是有代价的,他选择离开他的女朋友;追梦也是有准备的,他一直在攒钱,攒了 1000 多美元。接着就是需要一个导火线,这里就是好友的突然离世,触动了他。

走出第一步

Rudy 开始追随他的梦想,第一站是坐车到圣母大学,找了大学的神父,神父给他一个方向:先到圣十字学院读书,如果成绩好就可以转学到圣母大学,第一学年他只有一个学科是 A,其他都是 B,不足以去到圣母大学。为什么成绩只有一门 A 呢?因为他花了很多时间去参与关于橄榄球的活动,比如去圣母橄榄球场干杂活,去冒充圣母大学学生进入圣母橄榄球后勤给球员修头盔等等。

尽可能靠近梦想

在收到 N 多张圣母大学申请不通过的信,几乎快要放弃的时候,圣母大学终于给了通过。进入圣母大学只是走进梦想的第一步,离梦想又近了一些。

进入圣母大学后,第一件事就是参加橄榄球选拔赛,90 个人淘汰 30 人,选拔赛最终因为他的勤奋被助教看中(主教练则没看中他)。进入了预选名单后,他一如既往的勤奋,甚至被队友埋怨,教练一直拿他的勤奋去数落那些有天赋却不勤奋的队员,“如果你有 Rudy 十分之一的勤奋就好了”教练经常这样子说。在我们生活中,总有一些长辈会这样子教育小孩,也总有被教育的小孩埋怨被举例子的小孩。Rudy 没去理睬埋怨的队友,只是看着他的梦想,一步一步靠近。

放弃的边缘

Rudy 经历了好长一段时间的努力,还是进不了替补席,没能出现在赛场上。他情绪很低落,因为自己很努力,而且他的家人一直不相信他是圣母大学的橄榄球球员,毕竟他的家人只能通过电视看到圣母大学橄榄球球员,而他从来没出现在赛场上。Rudy 打算放弃了,他没去训练,跑去当初那个给他机会在圣母球场打杂的黑人朋友那,跟他述说这些事情,黑人朋友用自己的经历说服了 Rudy 重新回到训练场,黑人朋友当初也是橄榄球队员,一直没机会上场,自认为是因为皮肤不同被排斥,后面他就跟现在的 Rudy 一样,真的放弃了,现在十分后悔。Rudy 听到这么真实的劝导,整理了心情,换好衣服重新上训练场。

在大学快毕业的时候,Rudy 还是没有机会上替补席,进入大众的视野。在一场重要的比赛前,队长带领其他队员到了主教练办公室,恳请教练给 Rudy 一次上场的机会,最后主教练只能妥协,给了 Rudy 进入替补席的机会。

梦想实现

Rudy 的梦想就在这一刻快实现了,Rudy 请来了他的家人(包括那位一直看低他的哥哥),好友们以及那位在圣母大学打理橄榄球场的黑人。队友们安排让 Rudy 带领他们从球员通道走出来,Rudy 从小就无数次的想象这个场景:从球员通道跑出来,接受所有观众的欢呼。尽管进了大众的视野,但是还是踢不上球,主教练不让他上场,即使是大比分领先也不给机会,这时有球员带头喊 Rudy 名字,一传十十传百,最后全场球迷都在高喊 Rudy,主教练不得已,在最后换上 Rudy,Rudy 也不负众望,打进了一球。哨声响起,全场结束,圣母大学以大比分赢下这场关键的球,而 Rudy 被所有队友围起来,他被抬着走向球员通道(Rudy 这也是至今为止唯一一个享有这待遇的球员)。

全剧终。。。

触动了那根弦

从这部电影我看到了不少自己的影子,虽然我远没有他达到的高度,但是追梦的过程都是相通的。这过程往往需要经受身边的人的不信任、竞争者的排斥还有过程中的种种信心打击。

我们可以看到 Rudy 的梦想是成为圣母大学橄榄球员,这个过程他经历了很多个阶段:

  1. 进入圣十字学院读书(神父表示成绩好就可以进入圣母大学)

  2. 和一个学生成为好朋友(因为这个人能帮他拿好成绩)

  3. 主动请缨到圣母大学球场打杂

  4. 冒充圣母大学学生进入圣母大学橄榄球学生后勤修头盔

  5. 进入圣母大学

  6. 加入橄榄球新生选拔赛

  7. 进入最终 90 人名单

  8. 进入后部

  9. 进不了替补,接近放弃边缘

  10. 重整心气,坚持训练

  11. 梦想成真

还记得高中年级主任的那句话:什么是成功?成功是别人认为你干不成的事情,你干成了。

你干过哪些成功的事呢?欢迎留言分享一下。

123…24
LieBrother

LieBrother

当才华撑不起野心时,应该静下心来学习;当能力驾驭不了目标时,应该沉下心来历练。

120 日志
38 分类
138 标签
© 2016 - 2019 LieBrother
由 Hexo 强力驱动
主题 - NexT.Mist
本站访客数人次  |  本站总访问量次