多线程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,但并不释放已获得的锁,其它就绪的线程将可能得到执行机 ...
随机推荐
- [NOI2012]美食节(费用流)
题目描述 CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽管所有的菜品都 ...
- CodeVS1288埃及分数(IDA*)
在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数. 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的. 对于一个分数a/b,表示方法有很多种,但 ...
- QBXT Day2主要是数据结构(没写完先占坑)
简单数据结构 本节课可能用到的一些复杂度: O(log n). 1/1+1/1/.....1/N+O(n log n) 在我们初学OI的时候,总会遇到这么一道题. 给出N次操作,每次加入一个数,或者询 ...
- 【洛谷P2709】小B的询问
题目大意:给定一个长度为 N 的序列,M 个询问,静态查询区间 [l,r] 内的不同颜色数的平方和. 题解:直接莫队即可. 代码如下 #include <bits/stdc++.h> #d ...
- 跟着underscore学防抖
前言 在前端开发中会遇到一些频繁的事件触发,比如: window 的 resize.scroll mousedown.mousemove keyup.keydown -- 为此,我们举个示例代码来了解 ...
- Python中pandas dataframe删除一行或一列:drop函数
用法:DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False) 参数说明:labels 就是要删除的行列的 ...
- Django 路由报错友好提示
这个方法要在设置路由文件内使用也就是urls.py内. """mysite URL Configuration The `urlpatterns` list routes ...
- TestNg 10. 多线程测试-xml文件实现
代码如下: package com.course.testng.multiThread; import org.testng.annotations.Test; public class MultiT ...
- double free or corruption错误
这是我自己写代码是遇到的错误,完全想不到报错和写错的地方有关联性,记录下来给别人参考. 不允许转载. WhiteBack(&cut_buff,&out_buff,5)函数内有一段 be ...
- Mac下如何生成SSH Key-使用GitLab
步骤1.检查是否已经存在SSH Key 打开电脑终端,输入以下命令: ls -al ~/.ssh 会出现两种情况 步骤2. 生成/设置SSH Key 继续上一步可能出现的情况 (1)情况一:终端出现文 ...