• 方法一:继承Thread类实现

    1.创建一个类A,并继承Thread类

    2.重写A的run()方法

    3.创建A的实例对象b,即创建了线程对象

    4.使用b调用start()方法:启动线程(会自动调用run方法)


例如:

package 多线程;
/*
*1.创建两个线程分别完成100以内奇数偶数的输出
*/ public class CreateThread {
public static void main(String[] args){
Test1 t1 = new Test1();
Test2 t2 = new Test2();
t1.start();
t2.start();
}
}
//输出偶数
class Test1 extends Thread {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
if (i % 2 == 0) {
System.out.println("线程一输出偶数:"+i);
}
}
}
} //输出奇数
class Test2 extends Thread{
@Override
public void run() {
for(int i =0; i < 50;i++){
if (i %2 != 0) {
System.out.println("线程二输出奇数:"+i);
}
}
}
}
线程一输出偶数:0
线程一输出偶数:2
线程一输出偶数:4
线程二输出奇数:1
线程二输出奇数:3
线程二输出奇数:5
....
线程二输出奇数:47
线程二输出奇数:49
线程一输出偶数:6
线程一输出偶数:8

输出结果省略了一部分,可以看出来,两个线程的执行是交替的,所以奇数和偶数也是交替输出.


  • 方法二:实现Runnable接口

    1. 定义子类A,实现Runnable接口。

    2. 子类中重写Runnable接口中的run方法。

    3. 通过Thread类含参构造器创建线程对象。

    4. 将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。

    5. 调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法。


例如:

package 多线程;

public class CreateThread2 {
public static void main(String[] args){
Test3 t3 = new Test3();
Test4 t4 = new Test4(); //多态性
Thread t = new Thread(t3);
Thread tt = new Thread(t4);
t.start();
tt.start();
}
}
//输出偶数
class Test3 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 50; i++) {
if (i % 2 == 0) {
System.out.println("线程一输出偶数:"+i);
}
}
}
}
//输出奇数
class Test4 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 50; i++) {
if (i % 2 != 0) {
System.out.println("线程二输出奇数:"+i);
}
}
}
}
//结果和上一个类似
  • 注意事项

    1. 如果自己手动调用run()方法,那么就只是普通方法,没有启动多线程模式。

    2. run()方法由JVM调用,什么时候调用,执行的过程控制都有操作系统的CPU 调度决定。

    3. 想要启动多线程,必须调用start方法。

    4. 一个线程对象只能调用一次start()方法启动,如果重复调用了,则将出现异常。

  • 比较两种方法

    1.继承Thread:线程代码存放Thread子类run方法中。

    2.实现Runnable:线程代码存在接口的子类的run方法。

    3.实现方式的好处:

    ​ ①避免了单继承的局限性

    ​ ②多个线程可以共享同一个接口实现类的对象,非常适合多个相同线 程来处理同一份资源

  • 说在最后

    码字不易,感谢支持。水平有限,难免错漏和不准确,欢迎批评指正!

Java多线程的创建(一)的更多相关文章

  1. Java多线程(1) 创建

    一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下以下这张较为经典的图: Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Threa ...

  2. java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)

    今天开始就来总结一下Java多线程的基础知识点,下面是本篇的主要内容(大部分知识点参考java核心技术卷1): 1.什么是线程以及多线程与进程的区别 2.多线程的创建与启动 3.中断线程和守护线程以及 ...

  3. Java多线程的创建与简单使用

    一.线程的基本概念 什么是线程:Thread 进程内部的一个执行单元,它是程序中一个单一的顺序控制流程. 线程又被称为轻量级进程(lightweight process) 如果在一个进程中同时运行了多 ...

  4. java多线程之创建线程的4种方式及Future

    Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用四种方式来创建线程: 继承Thread创建线程 实现Runnable接口创建线程 实现callab ...

  5. Java多线程的创建(二)

    前言: 虽然java的API中说创建多线程的方式只有两种(There are two ways to create a new thread of execution),分别是继承Thread类创建和 ...

  6. java多线程-线程创建

    Java 线程类也是一个 object 类,它的实例都继承自 java.lang.Thread 或其子类. 可以用如下方式用 java 中创建一个线程,执行该线程可以调用该线程的 start()方法: ...

  7. Java多线程-----匿名内部类创建线程

       1.继承Thread类创建线程 package com.practise.createthread; public class AnonymousThread { public static v ...

  8. Java多线程——之一创建线程的四种方法

    1.实现Runnable接口,重载run(),无返回值 package thread; public class ThreadRunnable implements Runnable { public ...

  9. Java多线程之创建线程的三种方式比较

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6560057.html  一:继承Thread类创建线程 1:继承Thread类定义线程子类: 2:重写run( ...

随机推荐

  1. Java开发之快捷键

    1.显示桌面快捷键:win+D或者右击状态栏,选择显示桌面. 2.UE编辑器:如果想把多行记录合并为一行,使用替换(Ctrl+R),查找里输入^p(代表回车换行符),替换为里什么都不填,替换位置选择所 ...

  2. python调用java代码,jpype简单使用

  3. 2018-8-10-C#-局部函数与事件

    title author date CreateTime categories C# 局部函数与事件 lindexi 2018-08-10 19:16:52 +0800 2018-2-13 17:23 ...

  4. Google Java编程风格指南(中文+原始)

    目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才 ...

  5. H3C调试信息输出的例子

  6. H3C查看CF卡内的文件

    查看CF卡内的文件 <H3C>dir             //查看文件及目录文件 Directory of cf:/ -------------查看的是CF卡的内容      0    ...

  7. Linux USB 的 Urbs

    linux 内核中的 USB 代码和所有的 USB 设备通讯使用称为 urb 的东西( USB request block). 这个请求块用 struct urb 结构描述并且可在 include/l ...

  8. promise 讲解

    Promise的出现  解决了 js 回调地狱得问题 回调地狱图 Promise解决回调地狱 是不是美观多了.. 实例化Promise时传入方法里的两个参数 resolve(成功的回调)和reject ...

  9. There is no Action mapped for namespace [/] and action name [login] associate解决办法 .

    写了一个JSP项目,在配置struts2时遇到了这个错误,在网上逛了一大圈后终于解决了这个问题.具体解决方法是: 1.struts.xml的名字和位置 这里特别提一点,很多人遇到这个错误都是名字错误, ...

  10. Google 浏览器设置打开超链接到新窗口标签页

    一.windows  按住Ctrl + 鼠标点击,在新窗口打开,停留在当前页面: 按住Ctrl + Shift + 鼠标点击,在新窗口打开,停留在新窗口: 登录Google账号,管理Google账号, ...