* 需求:我们要实现多线程的程序。
 * 如何实现呢?
 *   由于线程是依赖进程而存在的,所以我们应该先创建一个进程出来。
 *   而进程是由系统创建的,所以我们应该去调用系统功能创建一个进程。
 *   Java是不能直接调用系统功能的,所以,我们没有办法直接实现多线程程序。
 *   但是呢?Java可以去调用C/C++写好的程序来实现多线程程序。
 *   由C/C++去调用系统功能创建进程,然后由Java去调用这样的东西,
 *   然后提供一些类供我们使用。我们就可以实现多线程程序了。
 * 那么Java提供的类是什么呢?
 *   Thread
 *   通过查看API,我们知道了有2中方式实现多线程程序。
 *
 * 方式1:继承Thread类。
 * 步骤
 *   A:自定义类MyThread继承Thread类。
 *   B:MyThread类里面重写run()?
 *    为什么是run()方法呢?
 *   C:创建对象
 *   D:启动线程

run()和start()的区别?
  // run():仅仅是封装被线程执行的代码,直接调用是普通方法
  // start():首先启动了线程,然后再由jvm去调用该线程的run()方法。

 1 public class MyThreadDemo {
 2     public static void main(String[] args) {
 3         // 创建线程对象
 4         // MyThread my = new MyThread();
 5         // // 启动线程
 6         // my.run();
 7         // my.run();
 8         // 调用run()方法为什么是单线程的呢?
 9         // 因为run()方法直接调用其实就相当于普通的方法调用,所以你看到的是单线程的效果
10         // 要想看到多线程的效果,就必须说说另一个方法:start()
11         // 面试题:run()和start()的区别?
12         // run():仅仅是封装被线程执行的代码,直接调用是普通方法
13         // start():首先启动了线程,然后再由jvm去调用该线程的run()方法。
14         // MyThread my = new MyThread();
15         // my.start();
16         // // IllegalThreadStateException:非法的线程状态异常
17         // // 为什么呢?因为这个相当于是my线程被调用了两次。而不是两个线程启动。
18         // my.start();
19
20         // 创建两个线程对象
21         MyThread my1 = new MyThread();
22         MyThread my2 = new MyThread();
23
24         my1.start();
25         my2.start();
26     }
27 }
28 public class MyThread extends Thread {
29
30     @Override
31     public void run() {
32         // 自己写代码
33         // System.out.println("好好学习,天天向上");
34         // 一般来说,被线程执行的代码肯定是比较耗时的。所以我们用循环改进
35         for (int x = 0; x < 200; x++) {
36             System.out.println(x);
37         }
38     }
39
40 }

View Code

转载于:https://www.cnblogs.com/lanjianhappy/p/6383913.html

java笔记之线程方式1启动线程相关推荐

  1. java匿名启动线程_使用匿名内部类:来创建线程的两种方式

    [Java]基础31:创建线程的两种方式 谢谢你的观看. 今天是我自学Java的第31天. 你的观看便是对我最大的鼓励. 话不多说,开始今天的学习: 线程的创建有两种方式,昨天学习过其中的一种: 创建 ...

  2. 【Java 语言】Java 多线程 一 ( 线程基础 : 线程启动 | 线程停止 | 线程暂停 | 线程优先级 | 守护线程)

    一. 线程启动 线程启动 : -- 1. 继承 Thread 运行线程 : 重写 Thread 类的 run 方法, 然后执行该线程; -- 2. 实现 Runnable 接口, 并运行线程; -- ...

  3. Java并发(二十一):线程池实现原理

    一.总览 线程池类ThreadPoolExecutor的相关类需要先了解: (图片来自:https://javadoop.com/post/java-thread-pool#%E6%80%BB%E8% ...

  4. Java核心(二)深入理解线程池ThreadPool

    本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高级内容,读者可根据 ...

  5. java new thread参数_java开启新线程并传参的两种方法

    一.继承Thread类 步骤: 1):定义一个类A继承于Java.lang.Thread类. 2):在A类中覆盖Thread类中的run方法. 3):我们在run方法中编写需要执行的操作:run方法里 ...

  6. 再读苹果《Threading Programming Guide》笔记(一):初识线程

    记得第一次读这个文档还是3年前,那时也只是泛读.如今关于iOS多线程的文章层出不穷,但我觉得若想更好的领会各个实践者的文章,应该先仔细读读官方的相关文档,打好基础,定会有更好的效果.文章中有对官方文档 ...

  7. Java中关于单核处理多个线程的认识与了解

    一:单核执行多线程 1. 首先要知道 进程,线程,程序进程:执行中的程序叫做进程(Process),是一个动态的概念,在一个进程中包含多个线程线程:指的是一条执行路径程序:就是静态的代码块 2. 那么 ...

  8. java sleep唤醒_详解Java中的线程让步yield()与线程休眠sleep()方法

    Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法 线程让步: ...

  9. java runnable 启动_Java开发笔记(九十七)利用Runnable启动线程

    前面介绍了线程的基本用法,按理说足够一般的场合使用了,只是每次开辟新线程,都得单独定义专门的线程类,着实开销不小.注意到新线程内部真正需要开发者重写的仅有run方法,其实就是一段代码块,分线程启动之后 ...

最新文章

  1. PL/SQL编程:loop-if-exit-end循环算5的阶乘
  2. 集成“PDF预览”和“页面翻译”的亿简浏览器0.5.0 alpha
  3. linux od命令详解
  4. cvpr2019/cvpr2018/cvpr2017(Papers/Codes/Project/Paper reading)
  5. 电脑蓝屏原因分析利器
  6. 放置游戏如何成爆款?我们在《最强蜗牛》中找到了答案
  7. Linux 系统应用编程——进程间通信(上)
  8. 分布式数据层中间件详解:如何实现分库分表+动态数据源+读写分离
  9. Android权限管理原理,Android手机Root授权原理细节全解析
  10. Android下图片处理的的一些方法
  11. python动态变量名_python实现可变变量名方法详解
  12. php表单yii2,yii2教程-ActiveForm表单组件
  13. python如何实现数据可视化,如何用python做可视化
  14. 华为鸿蒙朱丹丹,周一围心疼老婆?朱丹二胎产后憔悴臃肿却忙复出:这一年太痛苦...
  15. 古诗词-飞火在线工具
  16. CSS floats来创建三栏网页布局的方法
  17. 服务器的地址信息,服务器主机地址信息
  18. Conda更新速度慢、更换源
  19. fanuc机器人IO分配报警信号分配无效
  20. Python爬虫入门一:百度首页

热门文章

  1. mysql的锁是公平的么_lock 默认公平锁还是非公平锁?公平锁是如何定义?如何实现...
  2. LeetCode 27.移除元素
  3. python的内存管理机制及调优手段_Python的内存管理机制及调优手段
  4. 基于C语言的函数指针应用-消息命令处理框架
  5. 今晚课题:2019-3-22
  6. CocosStudio的节点如何使用自定义shader
  7. 用c语言产生大素数,C语言实现寻找大素数
  8. hbase hyperbase 区别_大数据之HBase的几个常规性问题
  9. kotlin自定义View出现 java.lang.ClassNotFoundException
  10. 什么是网络光纤收发器?