上篇博客我们介绍了一些基本概念,进程、线程、并发。下面我们开始写第一个多线程的程序。

两种方式:一、实现Runnable接口;二、基础Thread类。

一、实现Runnable接口

package com.tgb.klx.thread;

public class hello1 implements Runnable {

public hello1() {

}

public hello1(String name) {

this.name = name;

}

public void run() {

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

System.out.println(name + "运行 " + i);

}

}

public static void main(String[] args) {

hello1 h1 = new hello1("线程A");

Thread demo1 = new Thread(h1);

hello1 h2 = new hello1("线程B");

Thread demo2 = new Thread(h2);

demo1.start();

demo2.start();

}

private String name;

}

运行结果:

二、基于Thread类

package com.tgb.klx.thread;

public class hello2 extends Thread {

public hello2() {

}

public hello2(String name) {

this.name = name;

}

public void run() {

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

System.out.println(name + "运行 " + i);

}

}

public static void main(String[] args) {

hello2 h1 = new hello2("A");

hello2 h2 = new hello2("B");

h1.start();

h2.start();

}

private String name;

}

运行结果:

实现Runnable接口的方式,需要创建一个Thread类,将实现runnable的类的实例作为参数传进去,启动一个线程,如果直接调用runnable的run方法跟调用普通类的方法没有区别,不会创建新的线程。

Thread类实现了Runnable接口,Thread类也有run方法,调用Thread的run方法同样也不会新建线程,和调用普通方法没有区别,所以大家在使用多线程时一定要注意。

总结:

以上两种方式都可以实现,具体选择哪种方式根据情况决定。java里面不支持多继承,所以实现runnable接口的方式可能更灵活一点。

原文:http://blog.csdn.net/kanglix1an/article/details/46006093

java多线程打印helloworld,Java并发编程--多线程之HelloWorld相关推荐

  1. Java多线程系列(七):并发容器的原理,7大并发容器详解、及使用场景

    之前谈过高并发编程系列: 高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景 高并发编程系列:CountDownLatch.Semaphore等4大并发工具类详解 高并发编程系列:4大J ...

  2. Java多线程学习处理高并发问题

    在程序的应用程序中,用户或请求的数量达到一定数量,并且无法避免并发请求.由于对接口的每次调用都必须在返回时终止,因此,如果接口的业务相对复杂,则可能会有多个用户.调用接口时,该用户将冻结. 以下内容将 ...

  3. 多线程进阶=》JUC并发编程

    多线程进阶=>JUC并发编程 1.什么是JUC ​ JUC是java.util.concurrent的简写. ​ 用中文概括一下,JUC的意思就是java并发编程工具包. ​ 并发编程的本质就是 ...

  4. 一篇文章弄懂Java多线程基础和Java内存模型

    文章目录 一.多线程的生命周期及五种基本状态 二.Java多线程的创建及启动 1.继承Thread类,重写该类的run()方法 2.通过实现Runnable接口创建线程类 3.通过Callable和F ...

  5. java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...

    [Java教程][JAVA并发编程实战]12.使用condition实现多线程下的有界缓存先进先出队列 0 2016-11-29 17:00:10 package cn.study.concurren ...

  6. java 共享锁 独占锁_Java并发编程锁之独占公平锁与非公平锁比较

    Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家取排队本着先来 ...

  7. Java多线程专题一:并发所面临的问题

    并发的概念: 在Java中是支持多线程的,多线程在有的时候可以大提高程序的速度,比如你的程序中有两个完全不同的功能操作,你可以让两个不同的线程去各自执行这两个操作,互不影响,不需要执行完一个操作才能执 ...

  8. java程序使用异步总线_JAVA并发编程基础

    CPU核心 核心(Die)又称为内核,是CPU最重要的组成部分.CPU中心那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的,CPU所有的计算.接受/存储命令.处理数据都由核心执行.各种CP ...

  9. Java知识全面总结:并发编程+JVM+设计模式+常用框架+....

    本文整理的Java知识体系主要包括基础知识,工具,并发编程,数据结构与算法,数据库,JVM,架构设计,应用框架,中间件,微服务架构,分布式架构等内容.同时也有作为程序员的一些思考,包含了作为一个Jav ...

最新文章

  1. 卡巴循环30天不限次数循环试用工具
  2. selenium之 chromedriver与chrome版本映射表(更新至v2.33)
  3. PTGAN:针对行人重识别的生成对抗网络 | PaperDaily #36
  4. 设备树(device tree)学习笔记
  5. linux 基础知识学习(六)
  6. linux多线程学习(六)——信号量实现同步
  7. [CF]Codeforces Round #546 (Div. 2)
  8. 客户永远是对的---我的理解:做事不要抱怨,别为失败找借口。
  9. 最短路径Dijkstra算法实现和Floyd算法实现
  10. 高数测试——3.29
  11. Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout
  12. linux路由表的查看和含义
  13. python背景介绍_二手房房价影响因素分析 讲解1背景介绍
  14. 数学之美阅读笔记(1)
  15. 蜡笔小新钢达姆机器人_《蜡笔小新》当中出现的组合,小伙伴们最喜欢谁?
  16. (保姆级教程)免费将pdf转化为word文档,不限页数
  17. 美国电话号码正则表达式
  18. 为什么要求高频pcb板低ε(Dk)
  19. 贷超分销系统是什么,简单介绍下
  20. 程序员的工资被严重高估?

热门文章

  1. ASP.NET MVC获取上传的路径
  2. C语言中float,double类型,在内存中的结构(存储方式).
  3. 00002-两数之和-leetcode-1.暴力法(枚举法),2.哈希表法,目前更新了枚举法
  4. 【剑指offer】面试题47:礼物的最大价值(Java)
  5. vuerouter传参方式_VUE Router学习原理(一)
  6. html5+实现图片自动切换,js图片自动切换效果处理代码
  7. qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间
  8. Debian10降级安装php,如何在Debian 10 Linux上安装PHP
  9. 的图片怎么循环渲染_十分钟教你做个炫酷的图片切换过度效果
  10. 将x的二进制最后一位置为0