多线程-API
2023-06-13 09:12:34 时间
1、线程常用API
如何获取线程名称
public final String getName():获取线程的名称。
如何给线程设置名称
public final void setName(String name):设置线程的名称
针对不是Thread类的子类中如何获取线程对象名称呢?
public static Thread currentThread():返回当前正在执行的线程对象
Thread.currentThread().getName()
将该线程标记为守护线程或用户线程
当正在运行的线程都是守护线程时,Java 虚拟机退出。
该方法必须在启动线程前调用
class ThreadDaemon extends Thread {
@Override
public void run() {
for (int x = 0; x < 100; x++) {
System.out.println(getName() + ":" + x);
}
}
}
public static void main(String[] args) {
ThreadDaemon td1 = new ThreadDaemon();
ThreadDaemon td2 = new ThreadDaemon();
td1.setName("关羽");
td2.setName("张飞");
// 设置收获线程
td1.setDaemon(true);
td2.setDaemon(true);
td1.start();
td2.start();
Thread.currentThread().setName("刘备");
for (int x = 0; x < 5; x++) {
System.out.println(Thread.currentThread().getName() + ":" + x);
}
}
等待该线程终止
public final void join()
public class ThreadJoin extends Thread {
@Override
public void run() {
for (int x = 0; x < 100; x++) {
System.out.println(getName() + ":" + x);
}
}
}
public static void main(String[] args) {
ThreadJoin tj1 = new ThreadJoin();
ThreadJoin tj2 = new ThreadJoin();
ThreadJoin tj3 = new ThreadJoin();
tj1.setName("李渊");
tj2.setName("李世民");
tj3.setName("李元霸");
tj1.start();
try {
tj1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
tj2.start();
tj3.start();
}
如何获取线程对象的优先级?
public final int getPriority():返回线程对象的优先级
如何设置线程对象的优先级呢?
public final void setPriority(int newPriority):更改线程的优先级。
注意:
线程默认优先级是5
线程优先级的范围是:1-10。
线程优先级高仅仅表示线程获取的 CPU时间片的几率高,但是要在次数比较多,或者 多次运行的时候才能看到比较好的效果。
public static void main(String[] args) {
ThreadPriority tp1 = new ThreadPriority();
ThreadPriority tp2 = new ThreadPriority();
ThreadPriority tp3 = new ThreadPriority();
tp1.setName("东方不败");
tp2.setName("岳不群");
tp3.setName("林平之");
// 获取默认优先级
// System.out.println(tp1.getPriority());
// System.out.println(tp2.getPriority());
// System.out.println(tp3.getPriority());
// 设置线程优先级
// tp1.setPriority(100000);
//设置正确的线程优先级
tp1.setPriority(10);
tp2.setPriority(1);
tp1.start();
tp2.start();
tp3.start();
}
线程休眠
public static void sleep(long millis)
class ThreadSleepDemo {
public static void main(String[] args) {
ThreadSleep ts1 = new ThreadSleep();
ThreadSleep ts2 = new ThreadSleep();
ThreadSleep ts3 = new ThreadSleep();
ts1.setName("林青霞");
ts2.setName("林志玲");
ts3.setName("林志颖");
ts1.start();
ts2.start();
ts3.start();
}
}
class ThreadSleep extends Thread {
@Override
public void run() {
for (int x = 0; x < 100; x++) {
System.out.println(getName() + ":" + x + ",日期:" + new Date());
// 睡眠
// 困了,我稍微休息1秒钟
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
礼让线程
public static void yield():暂停当前正在执行的线程对象,并执行其他线程。
class ThreadYield extends Thread {
@Override
public void run() {
for (int x = 0; x < 100; x++) {
System.out.println(getName() + ":" + x);
Thread.yield();
}
}
}
class ThreadYieldDemo {
public static void main(String[] args) {
ThreadYield ty1 = new ThreadYield();
ThreadYield ty2 = new ThreadYield();
ty1.setName("林青霞");
ty2.setName("刘意");
ty1.start();
ty2.start();
}
}
相关文章
- Python爬虫之多线程
- 多进程和多线程区别以及优缺点[通俗易懂]
- Java多线程与并发模型之锁详解编程语言
- JAVA多线程统计日志计数时的线程安全及效率问题详解编程语言
- Java多线程系列–“JUC锁”02之 互斥锁ReentrantLock详解编程语言
- 使用MySQL函数API实现数据库操作(mysql函数api)
- Java多线程8:wait()和notify()/notifyAll()详解编程语言
- Linux内核API手册:实现技术最新突破(linux内核api手册)
- 利用多线程编译Linux:实现快速构建(多线程编译linux)
- 深入了解Linux线程与用户线程,提高多线程编程技能(linux线程用户线程)
- Redis优化之多线程操作(多线程操作redis)
- 数据一步一步学习如何用C API导出MySQL数据(c api导出mysql)
- API实现MySQL数据库备份(api备份mysql)
- 多线程调用Redis突破性能瓶颈提升性能(多线程调用redis)
- 多线程安全操作Redis存储数据(多个线程操作redis)
- Redis阻塞API锁定连接等待结果(redis阻塞api)
- 简易Redis操作开启通用API之旅(redis 通用api)
- Redis过期管理中的多线程策略(redis过期 多线程)
- 利用Redis实现多线程自动过期(redis过期 多线程)