一、创建线程

1、继承java.lang.Thread类

  重写run()方法。

2、实现java.lang.Runnable接口

  实现run()方法

二、启动线程

1、调用start()方法,而不是run()或者别的方法。

2、通过实现Runnable接口创建的线程没有start()方法,需要利用Thread的构造函数。

Thread(Runnable target)
Thread(Runnable target, String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, Runnable target, String name, long stackSize)

/**
* 实现Runnable接口的类
*
*/
public class DoSomething implements Runnable { private String name; public DoSomething(String name) { this.name = name; } public void run() { for (int i = 0; i < 5; i++) { for (long k = 0; k < 100000000; k++) ; System.out.println(name + ": " + i); } }
}
/**
* 测试Runnable类实现的多线程程序
*
*/
public class TestRunnable { public static void main(String[] args) { DoSomething ds1 = new DoSomething("阿三"); DoSomething ds2 = new DoSomething("李四"); Thread t1 = new Thread(ds1); Thread t2 = new Thread(ds2); t1.start(); t2.start(); }
}/**
* 测试扩展Thread类实现的多线程程序
*
*/
public class TestThread extends Thread{ public TestThread(String name) { super(name); } public void run() { for(int i = 0;i<5;i++){ for(long k= 0; k <100000000;k++); System.out.println(this.getName()+" :"+i); } } public static void main(String[] args) { Thread t1 = new TestThread("阿三"); Thread t2 = new TestThread("李四"); t1.start(); t2.start(); }
}

三、实现Runnable接口的方式比继承Thread类的优势

1、可以避免java中单继承的限制。

2、可以共享资源。

NewThread newThread = new NewThread();
new Thread(newThread,"A").start();
new Thread(newThread,"B").start();
new Thread(newThread,"C").start();

都是这三个线程用的都是同一个newThread对象,那么newThread对象中的变量就可以共享了~

转载于:https://www.cnblogs.com/lovgge/p/3591785.html

java多线程(一)——创建与启动线程相关推荐

  1. java多线程的创建和启动

    java读取文件的操作(字符流) 文章目录 多线程 线程 Thread 线程的创建和启动 线程创建两种方式的区别 多线程 线程 进程是应用程序的执行示例,有独立的内存空间和系统资源. 线程是CPU调度 ...

  2. Java 多线程练习---创建两个子线程,每个线程交替输出“你好--来自线程***”...

    |--需求说明 |--实现思路 1.创建一个类,实现Runnable,在这个类里面重写run()方法,在run()方法里面写一个20的for循环 2.创建一个类,实例化上面的类,用这个类的对象创建线程 ...

  3. Java多线程学习(八)线程池与Executor 框架

    历史优质文章推荐: Java并发编程指南专栏 分布式系统的经典基础理论 可能是最漂亮的Spring事务管理详解 面试中关于Java虚拟机(jvm)的问题看这篇就够了 目录: [TOC] 本节思维导图: ...

  4. Java多线程编程-(4)-线程间通信机制的介绍与使用

    上一篇: Java多线程编程-(1)-线程安全和锁Synchronized概念 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 Java多线程编程-(3)-线程本地Th ...

  5. java线程带来的异常,java多线程练习之捕获子线程异常例子

    本文章给大家介绍java多线程练习之捕获子线程异常一个实例,希望对大家会有所帮助. java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己 ...

  6. Java多线程复习:2(线程的创建和使用)

    线程的创建和使用 方法一,直接使用Thread import lombok.extern.slf4j.Slf4j; /*** @author:小关同学爱吃汉堡* @date: 2021/4/1 23: ...

  7. 7、Java并发性和多线程-如何创建并运行线程

    以下内容转自http://ifeve.com/creating-and-starting-java-threads/: Java线程类也是一个object类,它的实例都继承自java.lang.Thr ...

  8. Java多线程学习六:使用线程池比手动创建线程好在那里以及常用线程池参数的意义

    为什么要使用线程池 首先,回顾线程池的相关知识,在 Java 诞生之初是没有线程池的概念的,而是先有线程,随着线程数的不断增加,人们发现需要一个专门的类来管理它们,于是才诞生了线程池.没有线程池的时候 ...

  9. java多线程编程(三)- 线程的创建

    一:线程说明 1,Java虚拟机允许应用程序并发的运行多个执行线程. 2,线程都有自己的优先级,新线程会继承创建它的线程优先级. 3,线程可以为守护线程和用户线程,如java资源回收线程为守护线程.当 ...

最新文章

  1. C++ 检测内存泄露
  2. 18个让程序员流泪的瞬间,已笑喷,哈哈哈哈哈哈!
  3. java结丹期(11)----javaweb(jstljsp)
  4. node JS 微信开发
  5. opencv_python关于Qt的错误
  6. java md2_java中加密的实现方法(MD5,MD2,SHA)
  7. 我的学习JavaEE路线
  8. private的用法,为什么要来一个取值方法和设置值方法
  9. 如何在Mac OSX 系统上安装 Vagrant
  10. 汇编的一些坑以及部分上机题目的实现
  11. “单口相声”回归!罗永浩要开发布会了:黑科技!不售票!
  12. pearson特征选择matlab,使用sklearn做特征选择
  13. 前端人最需要的学习资料有哪些?我现在免费送给你!
  14. 面向对象进阶(day7)
  15. python基础教程-Python基础教程,Python入门教程(非常详细)
  16. thrift java first demo
  17. 人只会看到他想看的,不想看的视而不见
  18. TeamViewer最新版本TV 13介绍
  19. 视频和视频帧:H264编码格式整理
  20. SP324099: 无法完成操作--VS2015社区版无法登陆

热门文章

  1. java 自动补齐数值至指定位数
  2. SpringBootTest测试类报错:Suppressed: java.lang.IllegalStateException: Unable to find a @SpringBootCon
  3. 摘抄和总结--确保搞砸人工智能项目的十种方法
  4. 《假设的世界-一切不能想当然》笔记
  5. MS SQL Server 2000 按日期自动备份
  6. php栏目树,php生成无限栏目树
  7. iOS应用支持IPV6及阿里云相关配置
  8. MemCache详细介绍
  9. 3ds max sdk导出插件编写的心得
  10. rust能捏人不_不跟风出游的五一假期,武汉人到底能去哪