Java多线程的创建(一)
方法一:继承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接口
定义子类A,实现Runnable接口。
子类中重写Runnable接口中的run方法。
通过Thread类含参构造器创建线程对象。
将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。
调用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);
}
}
}
}
//结果和上一个类似
注意事项
如果自己手动调用run()方法,那么就只是普通方法,没有启动多线程模式。
run()方法由JVM调用,什么时候调用,执行的过程控制都有操作系统的CPU 调度决定。
想要启动多线程,必须调用start方法。
一个线程对象只能调用一次start()方法启动,如果重复调用了,则将出现异常。
比较两种方法
1.继承Thread:线程代码存放Thread子类run方法中。
2.实现Runnable:线程代码存在接口的子类的run方法。
3.实现方式的好处:
①避免了单继承的局限性
②多个线程可以共享同一个接口实现类的对象,非常适合多个相同线 程来处理同一份资源
说在最后
码字不易,感谢支持。水平有限,难免错漏和不准确,欢迎批评指正!
Java多线程的创建(一)的更多相关文章
- Java多线程(1) 创建
一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下以下这张较为经典的图: Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Threa ...
- java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)
今天开始就来总结一下Java多线程的基础知识点,下面是本篇的主要内容(大部分知识点参考java核心技术卷1): 1.什么是线程以及多线程与进程的区别 2.多线程的创建与启动 3.中断线程和守护线程以及 ...
- Java多线程的创建与简单使用
一.线程的基本概念 什么是线程:Thread 进程内部的一个执行单元,它是程序中一个单一的顺序控制流程. 线程又被称为轻量级进程(lightweight process) 如果在一个进程中同时运行了多 ...
- java多线程之创建线程的4种方式及Future
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用四种方式来创建线程: 继承Thread创建线程 实现Runnable接口创建线程 实现callab ...
- Java多线程的创建(二)
前言: 虽然java的API中说创建多线程的方式只有两种(There are two ways to create a new thread of execution),分别是继承Thread类创建和 ...
- java多线程-线程创建
Java 线程类也是一个 object 类,它的实例都继承自 java.lang.Thread 或其子类. 可以用如下方式用 java 中创建一个线程,执行该线程可以调用该线程的 start()方法: ...
- Java多线程-----匿名内部类创建线程
1.继承Thread类创建线程 package com.practise.createthread; public class AnonymousThread { public static v ...
- Java多线程——之一创建线程的四种方法
1.实现Runnable接口,重载run(),无返回值 package thread; public class ThreadRunnable implements Runnable { public ...
- Java多线程之创建线程的三种方式比较
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6560057.html 一:继承Thread类创建线程 1:继承Thread类定义线程子类: 2:重写run( ...
随机推荐
- P1007 N钱M鸡问题
题目描述 已知公鸡 \(5\) 元钱一只,母鸡 \(3\) 元钱一只,小鸡 \(3\) 只 \(1\) 元钱. 告诉你一个整数 \(n(1 \le n \le 1000)\) ,你现在要花 \(n\) ...
- Vue中qs插件的使用
qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库. 在项目中使用命令行工具输入:npm install qs安装完成后在需要用到的组件中:import qs from ‘qs’具体使用中 ...
- POJ 2253 Frogger(SPFA运用)
Description Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Fro ...
- H3C 使用tracert命令
- Python上下文管理使用
import contextlib from queue import Queue @contextlib.contextmanager def myOpen(file): f = open(file ...
- 学习linux命令,看这篇2w多字的linux命令详解
用心分享,共同成长 没有什么比每天进步一点点更重要了 本文已收录到我的github:https://github.com/midou-tech/articles/tree/master/docs/li ...
- 关于js如果控制标签的字符长度
js名字长度限定(如限制为50个字符,超过的显示...) var new_playerName = ""; jQuery(".translate").each( ...
- [梁山好汉说IT] 如何理解一致性Hash
[梁山好汉说IT] 如何理解一致性Hash 0x00 摘要 用梁山酒店分配客人为例来理解一致性Hash. 0x01. 与经典哈希方法的对比 经典哈希方法:总是假设内存位置的数量是已知且固定不变的.因为 ...
- 如何查看linux是否打开虚拟化
[服务器虚拟化] 执行命令: cat /proc/cpuinfo |grep vmx 如果有输出,则说明CPU支持虚拟化技术. --------> svm - Secure virtua ...
- Mysql 最全查询语句
基本查询语句及语法: select distinct from where group by having limit 一.单表查询 前期表与数据准备: # 创建一张部门表 create table ...