一.什么是线程,进程及创建多线程的方式
什么是进程,进程是正在运行的应用程序,进程是线程的集合。
* 什么是线程,线程是一条执行路径,一个独立的执行单元。
* 什么是多线程 为了提高程序效率
* 创建有哪些方式?
* 1.使用继承Thread类方式
* 2.使用实现runable接口方式
* 3.使用匿名类方式
* 4.callable
5.使用线程池创建线程
实例:
1.使用继承Thread类创建线程
/**
* @author shkstart
* @date 2019/6/5- 9:25
*/
class CreateThreadDemo1 extends Thread{
@Override
public void run(){
super.run();
for (int i = 0;i < 1000;i++){
System.out.println("run:"+i);
}
}
}
public class ThreadDemo1 {
/***
* 什么是进程,进程是正在运行的应用程序,进程是线程的集合。
* 什么是线程,线程是一条执行路径,一个独立的执行单元。
* 什么是多线程 为了提高程序效率
* 创建有哪些方式?
* 1.使用继承Thread类方式
* 2.使用实现runable接口方式
* 3.使用匿名类方式
* 4.callable
* 5.使用线程池创建线程
*/
public static void main(String[] args) {
CreateThreadDemo1 createThreadDemo1 = new CreateThreadDemo1();
//启动线程,不是调用run方法,而是调用start方法
//使用多线程后,代码不会从上到下执行
createThreadDemo1.start();
for (int i = 0;i < 1000;i++){
System.out.println("main:"+i);
}
}
}
运行:
可以看到run方法和main方法交替执行
二.同步与异步的区别
1.什么是同步
同步就是代码从上至下执行,俗称单线程
故此程序执行完需要20秒的时间。
2.什么是异步
俗称多线程
此程序执行完只需10秒,故多线程提高了程序效率。
在执行是有一个CPU执行权,每次运行时结果不一样,是因为在执行时cpu调度不一样。
2.使用实现Runnable方式创建多线程
实例:
/**
* @author shkstart
* @date 2019/6/5- 10:00
*/
class CreateThreadDemo2 implements Runnable{
@Override
public void run() {
for (int i = 0;i < 30;i++){
System.out.println("子线程run"+i);
}
}
}
public class ThreadDemo2 {
public static void main(String[] args) {
CreateThreadDemo2 t1 = new CreateThreadDemo2();
Thread thread = new Thread(t1);
thread.start();
for (int i = 0;i < 30;i++){
System.out.println("main"+i);
}
}
}
运行结果:
面试题:使用继承方式创建多线程好还是使用接口方式创建多线程好?
答:使用接口方式好。因为开发一般是面向接口编程,接口可以多继承。