多线程Thread类的方法
创建多个线程的第一种方法
1、定义一个Thread类的子类,比如MyThread类
2、重写Thread的run方法,设置线程任务
3、创建Mythread类的对象
4、调用方法start(),开启新的线程,执行run()方法
Thread的一些常用方法
public String getName():返回该线程的名字
static Thread currentThread(): 静态方法,返回当前的线程//返回的该线程的对象可以调用getName方法,得到当前线程名称
public void setName(String name):设置线程名称,创建的MyThread对象可以调用该方法设置线程名称
public static sleep(long milllis):当前线程暂停执行millis毫秒
MyThread类
public class MyThread extends Thread {
public MyThread(){
}
public MyThread(String name) {// 带参数的构造方法,可以用来设置线程名称
super(name);
}
@Override
public void run() {
String name = getName();
System.out.println(name);
}
}
方法的应用
public class Multithreading {
public static void main(String[] args) {
MyThread mt = new MyThread();
// 创建对象
// 调用start方法,开启新线程,执行run方法
//mt.start();//Thread-0
new MyThread().start();
new MyThread().start();
new MyThread().start();
System.out.println(Thread.currentThread().getName());
// 一共有5个线程,其中4个自己创建的线程,1个主线程,由于线程执行的顺序不一定,因此顺序是随机的
/*Thread-0
main
Thread-3
Thread-2
Thread-1*/
mt.setName("绿巨人");
mt.start();
new MyThread("钢铁侠").start();
}
}
sleep方法,可以用来当做计时器
package cn.zhuobo.day12.aboutMultithreading;
// public static void sleep(long millis):使当前正在执行的线程,以毫秒数暂停执行
public class Sleep {
public static void main(String[] args) {
for (int i = 0; i < 60; i++) {
System.out.println(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {// 实现了每隔1s打印一个数字,因为当前的main线程每打印一个数字就会被sleep方法暂停1000ms
e.printStackTrace();
}
}
}
}
创建多个线程的第二种方法
java.lang.Runable
声明实现Runable接口的类, 该类然后实现run方法,然后new一个该类的实例,作为创建Thread对象的参数,并且启动该线程
1、创建一个Runable接口的实现类
2、在实现类中重写Runable接口的run方法
3、创建一个Runable实现类的对象
4、创建一个Thread对象,并在构造方法中传递第3步的实现类对象
5、Thread对象调用start方法,开启新线程,执行run方法
Runablle接口的实现类
package cn.zhuobo.day12.aboutMultithreading;
public class RunableImpl implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName() + "-->" + i);
}
}
}
开启新的线程
package cn.zhuobo.day12.aboutMultithreading;
public class RunableDemo {
public static void main(String[] args) {
RunableImpl run = new RunableImpl();// 创建Runable实现类的对象
Thread t = new Thread(run);// 创建Thread对象,并使用Runable实现类的对象作为参数
t.start();// Thread对象调用start方法,执行run方法,开启新线程
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName());// main线程
}
}
}
多线程Thread类的方法的更多相关文章
- 2.匿名类,匿名类对象,private/protected/public关键字、abstract抽象类,抽象方法、final关键字的使用,多线程Thread类start方法原理
package com.bawei.multithread; //注意:模板方法我们通常使用抽象类或者抽象方法!这里我们为了方便在本类中使用就没有使用抽象类/抽象方法 public class Tem ...
- 探Java多线程Thread类和Runnable接口之间的联系
首先复习一下Java多线程实现机制,Java实现多线程方法有如下这么几种: 1.继承了(extends)Thread类 2.实现了(implements)Runnable接口 也就是说 有如下两种情 ...
- 多线程----Thread类,Runnable接口,线程池,Callable接口,线程安全
1概念 1.1进程 进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 任务管理器中: 1.2线程 线程是进程中的一个执行单元 ...
- 多线程——Thread类
进程(Process):“正在执行的程序”,程序进入内存运行就变成了一个进程.一个进程会产生多个线程. 多线程(Multithread):一个进程中同时存在几个执行体.单线程是按照函数的顺序执行,多线 ...
- Java多线程Thread类了解和使用
创建线程的两种方式 extends Thread 类 public class WelComeApp { public static void main(String[] args) { Welcom ...
- 并发编程之 Thread 类过期方法和常用方法
前言 在 Java 刚诞生时,Thread 类就已经有了很多方法,但这些方法由于一些原因(有一些明显的bug或者设计不合理)有些已经废弃了,但是他们的方法名却是非常的好,真的是浪费.我们在进行并发必编 ...
- 多线程-----Thread类与Runnable接口的区别
第一个继承Thread类来实现多线程,其实是相当于拿出三件事即三个卖早餐10份的任务分别分给三个窗口,他们各做各的事各卖各的早餐各完成各的任务,因为MyThread继承Thread类,所以在newMy ...
- Java多线程学习笔记(一)——Thread类中方法介绍
currentThread():返回代码正在被哪个线程调用. public class CurrentThreadWay { public static void main(String[] args ...
- Java多线程系列二——Thread类的方法
Thread实现Runnable接口并实现了大量实用的方法 public static native void yield(); 此方法释放CPU,但并不释放已获得的锁,其它就绪的线程将可能得到执行机 ...
随机推荐
- Hdoj 2036.改革春风吹满地 题解
Problem Description " 改革春风吹满地, 不会AC没关系; 实在不行回老家, 还有一亩三分地. 谢谢!(乐队奏乐)" 话说部分学生心态极好,每天就知道游戏,这次 ...
- Codeforces | CF1000B 【Light It Up】
蒟蒻第二篇题解... 比赛的时候写这道题MLE了qwq..根据CF的赛制我也没敢再交第二次.. 简单讲一下思路好了(假装是dalao)..根据题意要加一个或者不加新的点..如果加一个新的点意味着从这个 ...
- [luogu1110][ZJOI2007]报表统计【平衡树】
传送门 [洛谷传送门] [bzoj传送门] 前言 洛谷和网上的题解都好复杂哦,或者是stl水过. 窝的语文不怎么好,所以会有一些表达上的累赘或者是含糊不清,望各大佬海涵. 前置芝士 首先你一定要会平衡 ...
- 洛谷 P4705 玩游戏 解题报告
P4705 玩游戏 题意:给长为\(n\)的\(\{a_i\}\)和长为\(m\)的\(\{b_i\}\),设 \[ f(x)=\sum_{k\ge 0}\sum_{i=1}^n\sum_{j=1}^ ...
- RHEL7 下双网卡绑定做主备(冗余)
应用环境:在生产环境中,为了提高网络容错或吞吐量,一般服务器都会采取多网卡绑定的策略(此处只讲主备模式). 在RedHat 6.x下一般叫网卡做“bond”,在7.x版本中改名叫“Team”. 测试 ...
- 牛客练习赛40 A 小D的剧场 (思维dp)
链接:https://ac.nowcoder.com/acm/contest/369/A 题目描述 若你摘得小的星星 你将得到小的幸福 若你摘得大的星星 你将得到大的财富 若两者都能摘得 你将得到 ...
- 20165223 实验一 Java开发环境的熟悉
目录 一.实验报告封面 二.实验内容 (一)命令行下的JAVA程序开发 (二)IDEA中的JAVA程序开发 (三)自主练习 三.实验总结 四.PSP时间 一.实验报告封面 北京电子科技学院(BESTI ...
- JS原生 未来元素监听写法
绑定事件的另一种方法是用 addEventListener() 或 attachEvent() 来绑定事件监听函数. addEventListener()函数语法:elementObject.addE ...
- MVC控制器传递多个实体类集合到视图的方案总结
MVC控制器向视图传递数据包含多个实体类的解决方案有很多,这里主要针对视图模型.动态模型以及Tuple三种方法进行一些总结与记录. 基础集合类:TableA namespace ViewModelSt ...
- Django 项目内利用ORM直接运行脚本读库
#导包 import os import sys #将脚本所在工程添加到环境变量 #绝对路径 # sys.path.append('c:/Users/nxy/www/mymac') #相对路径 sys ...