java 多线程

Thread类

表示线程,也叫作线程类,创建该类的对象,就是创建线程对象(或者说创建线程)

 

要会使用Thread类的构造方法和常用方法

构造方法

public Thread()

public Thread(String name)

public Thread(Runnable target)

public Thread(Runnable target,String name)

 

常用方法

Public String getName()

Public void start()

Public void run()

Public static void sleep(long millis)

Public static Thread currentThread()

 

目前只分享创建线程的2种方式:

1通过继承Thread类的方式

2通过实现Runnable接口的方法

 (Runnable 接口:线程任务接口)

 

创建线程

方法一:继承Thread类

1 创建子类继承Thread类

2 在子类中重写run方法,

  把线程需要执行的代码放在run方法中

3 创建子类线程对象

4 调用start()方法启动线程,执行任务代码


 

public class test {
public static void main(String[] args) {
MyThread mt1 = new MyThread();
mt1.start();

for (int j = 0; j < 100; j++) {
System.out.println("主线程 第"+(j+1)+"次循环");
}
}
}

public class MyThread extends Thread {
    @Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("子线程第"+(i+1)+"次循环");
}
}
}


Java程序至少有2条线程,

一条为主线程,一条为垃圾回收线程

 

创建线程第2种方式:通过实现的方式

1 创建实现类实现Runnable接口

2 在实现类中重写run方法,把线程需要执行的任务代码放入run方法中

3 创建实现类对象

4 创建Thread线程对象,并传入Runnable接口的实现类对象

5 调用start()方法启动线程,执行任务


 

public class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("子线程 第"+(i+1)+"次循环");
}
}
}

public class test {
public static void main(String[] args) {
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr);
t1.start();

for (int j = 0; j < 100; j++) {
System.out.println("主线程 第"+(j+1)+"次循环");
}
}
}


创建线程第3种方法:匿名内部类(由第二种方法演变)

1 创建Runnable的匿名内部类

2 在匿名类内部重写run()方法

3 创建Thread线程对象,并传入Runnable匿名内部类

4 调用start()方法


 

public class test {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("子线程 第"+(i+1)+"次循环");
}
}
});
t1.start();

for (int j = 0; j < 100; j++) {
System.out.println("子线程 第"+(j+1)+"次循环");
}
}
}


备注:

1 主线程一定会等子线程全部执行完毕才会结束主线程

2 子线程任务代码执行完毕,线程就会销毁

 

上一篇:Java基础 -> 为什么wait 是 Object 类的本地方法


下一篇:Redis之主从复制原理 详解