Java多线程入门中几个常用的方法
2024-10-19 00:33:45
一.currentThread()方法
currentThread方法就是返回当前被调用的线程。
该方法为一个本地方法,原码如下:
/**
* Returns a reference to the currently executing thread object.
*
* @return the currently executing thread.
*/
public static native Thread currentThread();
可以看出他返回的是一个线程对象。
下面来看一个列子:
public class CurrentThreadText extends Thread{
public CurrentThreadText(){
System.out.println("构造器被"+Thread.currentThread().getName()+"线程调用了");
} @Override
public void run(){
System.out.println("run方法被"+Thread.currentThread().getName()+"线程调用了");
} public static void main(String[] args) {
System.out.println("main方法被"+Thread.currentThread().getName()+"线程调用了");
CurrentThreadText cu=new CurrentThreadText();
cu.start();
} }
结果如下:
除了run方法是在一个被自动取名为Thread-0的线程中其他的两个都在main方法中。
但是我们不使用start方法来启动线程,我们直接调用run方法会怎么样呢?
代码如下:
public static void main(String[] args) {
System.out.println("main方法被"+Thread.currentThread().getName()+"线程调用了");
CurrentThreadText cu=new CurrentThreadText();
cu.run();//我直接调用了run方法
}
结果:
结果都是被main这个线程调用了,所以说想要启动多线程,就必须使用start方法而不是run方法。run方法就是和单线程一样按着顺序来调用,都在一个main线程中。
二.isAlive()方法
isAlive()方法人如其名意思就是“死没死啊?”,判断线程是否处于活跃状态
列子如下:
public class IsAliveText extends Thread{
@Override
public void run(){
System.out.print("调用run这个方法的线程为"+this.getName());
if(this.isAlive()){
System.out.println("这个线程是活跃的");
}else{
System.out.println("这个线程是不活跃的");
}
} public static void main(String[] args) {
IsAliveText is=new IsAliveText();
System.out.printf(String.format("开始时当前线程为%s,%s", is.getName(),is.isAlive()?("活跃"):("不活跃")));
System.out.println();
is.start();
System.out.printf(String.format("结束时当前线程为%s,%s", is.getName(),is.isAlive()?("活跃"):("不活跃")));
System.out.println();
}
}
结果如下:
三.sleep()方法
sleep(n)方法是指让某个线程睡眠n个毫秒,比如
public class ThreadSleepText {
public static void main(String[] args) throws Exception {
System.out.println("当前线程为"+Thread.currentThread().getName());
Thread.sleep(5000);
System.out.println("结束");
}
}
程序会在5秒后结束。
四.getID()方法
过得线程的唯一标识
最新文章
- win7(x64)下安装cocos2d并编译安卓项目
- IOS Block-Block块的使用与理解
- c#使用aspose.cells 从datatable导出数据到excel
- Missing Ranges &; Summary Ranges
- java简单优化和编写规范,自己总结的。
- oc小总结
- 0901~0907面试总结(腾讯CDC、金蝶)
- smarty3--registerPlugin()函数报错问题
- Android studio中出现非法字符时的部分解决方法
- MyEclipse设置默认的目光格式
- GC 基础(转)
- LeetCode算法题-Keyboard Row(Java实现)
- Idea debug时报错:Command line is too long
- Windows 10 IoT Serials 10 – 如何使用OCR引擎进行文字识别
- HDU - 4578 Transformation(线段树区间修改)
- python面向对象三大特性之封装
- nginx搭建以及其配置文件
- word2vec参数理解
- selenium 模拟手机
- 【Java】身份证号码验证
热门文章
- Python socket文件传送md5校验
- openwrt修改hosts
- topcoder srm 585 div1
- 腾讯云centos7.2安装jdk1.7 tomcat7.0部署项目示例
- Flex外包公司——Flex案例展示
- VSCode+python插件
- Juploader 1.0 谷歌(chrome)浏览器中成功上传文件后返回信息异常
- android SDK SDK Manager.exe 无法打开,一闪而过最终解决办法
- 使用pca/lda降维
- 201621123075 Week03-面向对象入门