一、主线程

public class MainThread {

/**

* 主线程:指执行main()方法的线程,且该线程是单线程,从上到下执行

* JVM执行main()方法时,JVM会将main()方法放入到栈内存中执行,

* 同时CPU会为main()方法开辟一条执行路径,该路径名称就是主线程

*

* @param args

*/

public static void main(String[] args) {

Persion p1 = new Persion("小强");

p1.run();

Persion p2 = new Persion("秦问天");

p2.run();

}

}

二、创建线程的两个方式

方式1:继承Thread类

步骤:

A、继承Thread类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把 run()方法称为线程执行体。

B、创建Thred子类实现,既是创建线程对象

C、线程对象调用start()方法来开启线程

测试:

public class Demo2 {

public static void main(String[] args) {

MyThread my = new MyThread("秦问天");

my.start();

for (int i = 1; i <= 20; i++) {

System.out.println("main()....."+i);

}

}

}

自定义线程类:

public class MyThread extends Thread {

private String name;

public MyThread() {}

public MyThread(String name) {

this.name = name;

}

@Override

public void run() {

for (int i = 1; i <= 20; i++) {

System.out.println(this.name+"......<===>..."+i);

}

}

}

三、Thread类

构造方法:

public Thread() :分配一个新的线程对象。

public Thread(String name) :分配一个指定名字的新的线程对象。

public Thread(Runnable target) :分配一个带有指定目标新的线程对象。

public Thread(Runnable target,String name) :分配一个带有指定目标新的线程对象并指定名字

常用方法:

public String getName() :获取当前线程名称。

public void start() :导致此线程开始执行; Java虚拟机调用此线程的run方法。

public void run() :此线程要执行的任务在此处定义代码。

public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。

public static Thread currentThread() :返回对当前正在执行的线程对象的引用

四、创建线程的方式二

步骤如下:

1. 定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。

2. 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正 的线程对象。

3. 调用线程对象的start()方法来启动线程。

测试:

public class MyRunnable implements Runnable {

private String name;

public MyRunnable(String name) {

this.name = name;

}

public void run() {

for (int i = 1; i <=21; i++) {

System.out.println(Thread.currentThread().getName()+"..<===>.."+i);

}

}

}

public class MyRunableTest {

public static void main(String[] args) {

MyRunnable myRunnable = new MyRunnable("张小凡");

//th对象才是真正的线程对象,叶凡才是真正的线程名

Thread th = new Thread(myRunnable,"叶凡");

th.start();

for (int i = 0; i <=21; i++) {

System.out.println("main().."+i);

}

}

}

java二期_JAVA基础之多线程二期相关推荐

  1. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  2. java 必备_Java基础必备

    标签: 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希 ...

  3. cmd运行java文件_Java基础 前传

    微信搜一搜秃然编程 一.关于MS-DOS MS-DOS(微软磁盘操作系统),是美国微软公司提供的磁盘操作系统.在美国微软公司推出Windows1.0.Windows3.0.1995年8月24日推出的操 ...

  4. java基本命令_java基础篇 快捷键 常见Dos命令等等

    (一) 计算机基础介绍 (二) jdk 安装 (三) 环境变量介绍及配置 (四) HelloWorld 实现 一 . 计算机概述 (1) 计算机 计算机(computer)俗称电脑,是一种用于高速计算 ...

  5. java嵌套循环_java基础之嵌套循环

    一. for循环双层嵌套 首先内层循环属于外层循环循环体的一部分,当循环体执行完以后外层循环才进入第二次循环,此过程中内层循环需要执行符合条件的完整循环.(外循环控制行数,内循环控制每一行的个数) f ...

  6. java三板斧_JAVA基础学习 三板斧

    JAVA基础学习 -1 三板斧 1. 引子 最近因为工作需要,开始学习JAVA,我之前常用的编程语言是C,C#,C++,基本没有用JAVA,JAVA需要从基础开始学习了. JAVA是从C++优化而来: ...

  7. java基础线程_Java基础之多线程没那么复杂!

    多线程的引入 1.什么是多线程 线程是程序执行的一条路径,一个进程中可以包含多条线程;多线程并发执行可以提高程序的效率 2.进程和线程之间的关系 操作系统可以同时执行多个任务,每个任务就是进程;进程可 ...

  8. java二期_Java架构师鲁班二期

    java 中 wait 和 sleep 方法的不同? 通常会在电话面试中经常被问到的 Java 线程面试问题.最大的不同是在等待时 wait 会释放 锁,而 sleep 一直持有锁.Wait 通常被用 ...

  9. java银行转账会出现的问题_java基础入门-多线程同步浅析-以银行转账为例子

    在说之前先普及一下线程是什么? 线程:说白了就是一个任务片段 进程:是一个具有独立功能的程序关于某个数据集合的一次运行活动,一个进程有一个或者多个线程 线程与进程的本质区别就是有么有数据共享空间,线程 ...

最新文章

  1. 【前端】react and redux教程学习实践,浅显易懂的实践学习方法。
  2. mybatis 分页需要的jar包下载_牛逼哄哄的PageHelper分页插件到底牛在哪里?
  3. Struts2 控制台不打印异常的解决方案
  4. python是谁维护的_Python 库从开发到维护
  5. 解决方案和项目的区别_沃尔玛用大数据提高销售额,云计算和大数据技术之间的区别汇总...
  6. python调用浏览器全屏_javascript、js将页面全屏的方法(兼容多浏览器)
  7. mysql 初始化_Windows10安装mysql
  8. 无SSH工具部署网站到火腿云
  9. 优化案例--改写IN条件为INNER JOIN
  10. UML(Unified Modeling Language)统一建模语言--类图详解
  11. 基础知识:Mac上更改“字体”窗口中的字体大小
  12. MAMP 403 Forbidden You don't have permission to access / on this server.
  13. Spring实战(开发Web应用)
  14. 塞规公差带图_孔与轴用量规的公差带图
  15. python修改快捷键_Pycharm快捷键设置 更换或者增添快捷键 设置字体放大缩小快捷键...
  16. 苹果手机上运行python_手机上运行Python
  17. What Is Time-series Data? 什么是时间序列数据?
  18. java 切面 注解_十、使用注解定义切面
  19. Bugku旧平台web writeup
  20. ASEMI-SL1550超低压降肖特基二极管型号

热门文章

  1. Xml中SelectSingleNode方法中的xpath用法
  2. solaris下修改 IPMP 配置
  3. xsl判断节点存在_HashMap1.8之节点删除分析
  4. unzip 报错error [clas.zip]:  missing 1844 bytes in zipfile
  5. catcti监控linux主机,CentOS7搭建Prometheus 监控Linux主机
  6. java 数据库连接 释放_java - 数据库连接池耗尽 - Java - 堆栈内存溢出
  7. java timezone_Java TimeZone setID()方法与示例
  8. html导航栏点击不能跳转,无法单击导航栏中的链接CSS HTML
  9. 清空 linux 服务器,Linux服务器清理
  10. php商品在最少购买,ECSHOP给商品设置最少购买数量的方法