java_thread
线程的概念
线程是进程中可以独立执行的最小单位.
为什么需要多线程
下面是一个简单事例, 也比较贴近生活, 平时我只要休息就会在家做饭. 喜欢做饭有时候做饭也是一门艺术. 一种实用艺术, 不同通过外观而且通过味道给家人以感受. 也算是 2 维艺术.
我们做饭也是有程序, 买菜 -> 洗菜 -> 切菜 -> 下锅 , 我家厨房不大, 一个人正好所以我通常是按顺序一件件的搞, 知道菜肴上桌.
这里定义了两个函数分别是
- prepareVegatable();
- doSomeCooking();
- public static void main(String[] args) {
- prepareVegatable();
- doSomeCooking();
- }
- private static void prepareVegatable(){
- try {
- println("Begin prepare some Vegatable.");
- Thread.sleep(1000 * 10L);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- println("ready to cooking");
- }
- private static void doSomeCooking(){
- try {
- println("Begin do some cooking");
- Thread.sleep(1000 * 10L);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- println("ready to have supper");
- }
- private static void println(String messsage){
- System.out.println(messsage);
- }
- Begin prepare some Vegatable.
- ready to cooking
- Begin do some cooking
- ready to have supper
每一项工作都是耗时, 所以是时间的顺延. 想一想自家这样做还可以. 不过要是开饭店就差远了. 这样即使做的再好吃在失去耐心的现代人面前你也得因为等待时间太长而流失客户.
关键是缺人手, 所谓缺人手也不一定是人, 机器人现在也能做. 也就是缺做任务的. 线程所要完成的计算被称为任务.
- Thread t1 = new Thread(){
- @Override
- public void run() {
- prepareVegatable();
- }
- };
- t1.start();
- Thread t2 = new Thread(){
- @Override
- public void run() {
- doSomeCooking();
- }
- };
- t2.start();
这里我们多人手, 工作也就是同时进行了, 有关 Thread 创建的内容, 随后详细说明.
不是随后就是现在, 随后我们会根据源码一个一个地理解 Thread 构造方法和常用方法.
- Thread thread = new Thread(){
- @Override
- public void run() {
- for (int i = 0; i < 100; i++) {
- System.out.println("running on created thread" + i);
- }
- }
- };
- thread.start();
程序启动 JVM 会为程序创建其主线程.
创建 Thread , 可以 Thread 进行命名
重写 Thread 的 Run 方法
调用其 start 方法, 注意 start 只能调用一次
thread
来源: http://www.jianshu.com/p/11f0a5f4f4f6