【线程】,Java 自学宝典 pdf
多进程之间不能共享资源文件,而线程可以共享
线程更加轻量化
线程要依赖
进程
进程是操作系统资源分配的最小单位
线程是程序执行的最小单位
===========================================================================
1.1.通过实现 Thread 类然后重写 run 方法进行创建
public class ThreadDemo3 {
//重写一个类继承 Thread 类
static class MyThread extends Thread{
@Override
public void run() {
//这里面就可以写要执行的代码
System.out.println("我是新线程");
try {
//调用 sleep 方法让其休息 60 秒
Thread.sleep(60*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
//创建一个线程之后都要调用 start 取执行
myThread.start();
}
}
1.2.通过 Runable 接口并且实现 run 方法进行创建
public class ThreadDemo3 {
static class MyThread2 implements Runnable{
@Override
public void run() {
System.out.println("我是线程 2");
}
}
public static void main(String[] args) {
Thread thread = new Thread(new MyThread2());
thread.start();
}
}
1.3.通过实现匿名 Runable 的方式实现
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("我是线程 3");
}
});
thread.start();
}
1.4.通过 lambda 表达式进行实现
(推荐使用,但是只能在 JDK8+才支持)
public static void main(String[] args) {
Thread thread = new Thread(()->{
System.out.println("我是线程 4");
});
thread.start();
===========================================================================
对于同一个程序来说,使用单线程和多线程去执行效率是有很大差距的那么下面我距离说明
2.1.前提:要了解时间戳这个概念,也就是利用它来记录我们代码程序的执行时间,时间戳也就是在程序开始的时候记录一个时间,然后当程序完成之后在记录一个时间,然后让完成时间减去初始时间,那么就是程序的执行时间
未引入多线程之前,执行程序只能串行式执行,先引入 A,完了之后才能执行 B,完了之后才能执行 C……
通过多线程,我们可以并发式的执行 A B C
但是多个线程的执行顺序是操作系统底部的调度器实现的
例如:执行同一个程序,分别使用单线程和多线程来看看他的执行速度
public class ThreadDemo3 {
static long count = 10_0000_0000L;
public static void oneThread(){
//记录一个开始时间
long begin = System.currentTimeMillis();
int a = 0;
for (int i = 0; i < count; i++) {
a++;
}
int b = 0;
for (int i = 0; i < count; i++) {
b++;
}
//记录一个结束时间
long end = System.currentTimeMillis();
//打印所花费的时间
System.out.println("单线程需要花费的时间: "+(end-begin)+"ms");
}
public static void twoThread() throws InterruptedException {
long begin = System.currentTimeMillis();
评论