目录
琐碎语法
# currentThread()
返回当前正在执行的线程对象的引用。源代码声明时返回 static Thread
# Thread 名字的 2 个 API
setName 和 getName
getName() //返回线程对象的名字
=======
修子的日记 目录
琐碎语法
# currentThread()
返回当前正在执行的线程对象的引用。源代码声明时返回 static Thread
# Thread 名字的 2 个 API
setName 和 getName
getName() //返回线程对象的名字
>>>>>>> 593e4ea (添加了SSM)
String myThreadName = 线程对象.getName();
setName() //修改线程对象的名字
线程对象.setName("线程新名字");
# 默认名字
(仅了解)
psvm 的当中的线程是主线程,主线程名字是 main
分支线程名字是 Thread-0 Thread-1,...从 0 开始编号
# 用法例子
- 当在 main 方法中调用当前线程那么获取的线程对象就是主线程(main)
- 当在 run 方法中调用 currentThread 方法,那么要看是哪个线程对象调用了这个 run 方法,
是谁调用的 run,那个线程对象就是获取的当前线程!
public class ThreadTest04 {
public static void main(String[] args) {
MyThread04 myThread04 = new MyThread04();
myThread04.start();
for(int i=0;i<100;i++){
Thread myCurrentThread4main = Thread.currentThread();
System.out.println("04主线程 "+myCurrentThread4main.getName()+" --> " + i);
}
}
}
class MyThread04 extends Thread{
@Override
public void run(){
for(int i=0;i<100;i++) {
Thread myCurrentThread4 = Thread.currentThread();
System.out.println("04分支线程 "+ myCurrentThread4.getName()+ "--> " + i);
}
}
}
打印结果片段
04主线程 main --> 0
04主线程 main --> 1
04主线程 main --> 2
04主线程 main --> 3
04主线程 main --> 4
04分支线程 Thread-0--> 0
04主线程 main --> 5
04分支线程 Thread-0--> 1
04分支线程 Thread-0--> 2
04主线程 main --> 6
...
# 定时器
# 什么是定时器?
定时器作用:间隔特定的时间,执行特定的程序
可以使用 sleep 方法,睡眠,设置睡眠时间,醒来后执行任务。这种方式是最原始方式的定时器。(比较 low)
在 java 的类库中已经写好了一个定时器:java.util.timer
,可以使用
在目前的开发中timer
也很少用,因为现在有很多高级框架都是支持定时任务的
在实际的开发中,目前使用较多的是 Spring 框架中提供的 SpringTask 框架这个框架只要进行简单的配置,就可以完成定时器的任务
# 定时器的 schedule 具体实现
3个参数共同确定,间隔特定的时间周期性执行某任务
timer.schedule(定时任务, 第一次执行时间, 间隔时间(单位毫秒))
timer.schedule(new LogTimeTask(), firstTime, 1000*10)
注意,在timer.schedule
源代码里,定时任务TimerTask
的参数是Runnable
,首先定时任务TimerTask
是一个线程。除了这个,timer.schedule
也可以看做是一个线程
# 定时器的定时任务参数
参数应该填什么?源代码的``是抽象类,要自己创建类继承它

抽象类, 不能 new。继承抽象类时,子类要将父类的抽象方法实现
class MyLogTimerTask extends TimerTask {
@Override
public void run(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strTime = simpleDateFormat.format(new Date());
System.out.println(strTime + "假装完成了一次数据备份!");
}
}
也可以针对TimerTask
用匿名内部类的方式
注意:和继承相比,new TimerTask
有括号!
public class TimerTest2 {
public static void main(String[] args) throws ParseException {
Timer timer = new Timer();
SimpleDateFormat simpleDataFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date firstTime = simpleDataFormat.parse("2020-03-14 09:30:00");
timer.schedule(new TimerTask(){
@Override
public void run(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strTime = simpleDateFormat.format(new Date());
System.out.println(strTime + "假装完成了一次数据备份!");
}
}, firstTime, 1000*5);
}
}
←
<<<<<<< HEAD
wait方法和notify方法
=======
wait方法和notify方法
- 跟随系统
- 浅色模式
- 深色模式
- 阅读模式