一个程序就是一个进程,而一个程序中的多个任务则被称为线程。
JAVA使用多线程
1.继承Thread类
2.实现Runnable接口
线程安全
synchronized关键字
实例变量
1 | public class ThreadTest implements Runnable{ |
运行结果:
1 | -------------- |
a,b,c,d线程使用共享变量count。线程a1,b1
与线程a,b,c,d
不使用共享变量。可以使用synchronized关键字使各个线程排队执行run()方法synchronized public void run() {
。
同一个对象多个线程执行,共享成员变量,不共享局部变量
不同对象多个线程,不共享成员变量
结束线程的方法
- 使用标志位终止线程还可以线程中去数据库读取本任务的状态信息判断是否退出
1
2
3
4
5
6public volatile boolean exit = false;
public void setExit(boolean exit) {
this.exit = exit;
}
...
xxx.setExit(true); // 退出所有线程,还可以改造成根据条件判断退出指定线程 interrupt()
中断线程1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public class InterruptThreadTest extends Thread {
public static void main(String[] args) {
try {
InterruptThreadTest t = new InterruptThreadTest();
t.start();
Thread.sleep(200);
t.interrupt();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void run() {
for (int i = 0; i <= 100000; i++) {
if (Thread.currentThread().isInterrupted()) {
break;
}
System.out.println("i=" + i);
}
}
}
Spring线程池配置
1 |
|
其他
线程调度 线程池性能?
创建、销毁线程需要消耗资源。
需要建线程任务,多线程就是为了并发。
1 | public class ThreadPoolExample1 { |