标签:size java设计 alt ring 清除 阻塞 ams rup 访问
查看线程名是很简单的,调用Thread.currentThread().getName()
即可。
public class MyThreadDemo {
public static void main(String[] args) {
MyThread myThread = new MyThread();
//带参构造方法给线程起名字
Thread thread1 = new Thread(myThread, "关注公众号Java3y");
Thread thread2 = new Thread(myThread, "qq群:742919422");
thread1.start();
thread2.start();
// 打印当前线程的名字
System.out.println(Thread.currentThread().getName());
}
}
守护线程是为其他线程服务的
守护线程有一个特点:
使用线程的时候要注意的地方
setDaemon(boolean on)
线程优先级高仅仅表示线程获取的CPU时间片的几率高,但这不是一个确定的因素!
线程的优先级是高度依赖于操作系统的,Windows和Linux就有所区别(Linux下优先级可能就被忽略了)~
可以看到的是,Java提供的优先级默认是5,最低是1,最高是10:
线程有3个基本状态:执行、就绪、阻塞
Thread上很多的方法都是用来切换线程的状态的,
调用sleep方法会进入计时等待状态,等时间到了,进入的是就绪状态而并非是运行状态!(注意sleep方法不会释放锁)
调用yield方法会先让别的线程执行,但是不确保真正让出
意思是:我有空,可以的话,让你们先执行
调用join方法,会等待该线程执行完毕后才执行别的线程~
线程中断在之前的版本有stop方法,但是被设置过时了。现在已经没有强制线程终止的方法了!
由于stop方法可以让一个线程A终止掉另一个线程B
总而言之,Stop方法太暴力了,不安全,所以被设置过时了。
我们一般使用的是interrupt来请求终止线程~
Thread t1 = new Thread( new Runnable(){
public void run(){
// 若未发生中断,就正常执行任务
while(!Thread.currentThread.isInterrupted()){
// 正常任务代码……
}
// 中断的处理代码……
doSomething();
}
} ).start();
再次说明:调用interrupt()并不是要真正终止掉当前线程,仅仅是设置了一个中断标志。这个中断标志可以给我们用来判断什么时候该干什么活!什么时候中断由我们自己来决定,这样就可以安全地终止线程了!
interrupt线程中断还有另外两个方法(检查该线程是否被中断):[检查中断是使用interrupt的用途之一]
标签:size java设计 alt ring 清除 阻塞 ams rup 访问
原文地址:https://www.cnblogs.com/serendipity-fly/p/9359043.html