【线程】
-
多线程
多线程可以让多个代码片段“同时”运行,事实上是并发运行的,多个代码片段是走走停停的。 -
创建线程有两种方式
-
java中所有代码都是线程运行的。main方法是虚拟机启动起来后创建的第一条线程来运行的。该线程的名字称为“main”也称主线程
线程提供了一个静态的方法: static Thread currentThread() 该方法可以获取运行这个方法的线程
【创建线程的两种方式】
- 1.定义一个类继承Thread并重写run方法
-
start方法用于启动线程,使得线程纳入线程调度中得以并发运行。当线程启动后第一次分配到时间片后会自动调用run方法开始执行任务。
因此我们不要主动调用该线程的run方法 -
优点:
简单,直接,适合匿名内部类形式创建 -
缺点:
1.继承Thread,由于java是单继承,这会导致无法再继承其他类复用方法,实际开发很不方便。
2.线程任务定义在线程中,导致线程重用性变差
示例:
public class ThreadDemo1 {
public static void main(String[] args) {
Thread t1 = new MyThread1();
Thread t2 = new MyThread2();
t1.start();
t2.start();
}
}
class MyThread1 extends Thread{
public void run() {
for(int i=0;i<1000;i++) {
System.out.println("你是谁啊?");
}
}
}
class MyThread2 extends Thread{
public void run() {
for(int i=0;i<1000;i++) {
System.out.println("我是查水表的!");
}
}
}
- 2.实现Runnable接口单独定义线程任务
示例:
public class ThreadDemo2 {
public static void main(String[] args) {
// 实例化线程任务
Runnable r1 = new MyRunnable1();
Runnable r2 = new MyRunnable2();
// 创建线程
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
}
class MyRunnable1 implements Runnable{
public void run() {
for(int i=0;i<1000;i++) {
System.out.println("你是谁啊?");
}
}
}
class MyRunnable2 implements Runnable{
public void run() {
for(int i=0;i