如果实现多线程
当cpu是单核的时候,只能执行一个线程,
双核,四核,
如果是单核,线程调用时间比较快,可能会出现多线程并发的假象。
进程:
正在被执行的程序。
一个进程里面可能出现多个线程。
实现多线程常用的两种方法:
1)Thread
(1)继承 Thread
(2)重写run方法
(3)创建线程对象,通过start()启动线程
案例:
/**
*
* 将普通类变为线程类:
* 第一种实现多线程的方法:
* (1)extends Thread
* (2)重写run方法
*
*
*/
public class Demo1 extends Thread{
//重写run方法
@Override
public void run() {
for (int i = 0; i < 100; i++) {
//Thread.currentThread().getName():打印当前线程的名称
System.out.println(i+"---"+Thread.currentThread().getName());
}
}
}
/**
* 测试类
*/
class TestDemo1{
public static void main(String[] args) {
Demo1 d1 = new Demo1();
Demo1 d2 = new Demo1();
//d1.run();//普通方法的执行
//如果想实现多线程的调用,需要使用start方法
d1.start();
d2.start();
}
}
2)Runnable接口
(1)实现Runnable接口
(2)重写run方法
(3)创建线程类,不能直接调用start方法,需要创建Thread类。
(4)使用new Thread(Runnable) 构造函数
(5)调用thread.start()方法启动线程
案例:
/**
* 第二种实现多线程的方法
* (1)implements Runnable
* (2)重写run方法
*/
public class Demo2 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 500; i++) {
System.out.println(i+"---"+Thread.currentThread().getName());
}
}
}
/**
* 测试Demo2类
*/
class TestDemo2{
public static void main(String[] args) {
Demo2 d2 = new Demo2();
Thread t1 = new Thread(d2);
t1.start();
Demo2 d3 = new Demo2();
Thread t2 = new Thread(d3);
t2.start();
}
}
start方法和run方法的区别:
run方法相对是调用普通方法,main方法的单线程执行,
使用start方法,启动多线程。(调用start方法并不会立马执行多线程)
建议:
在实现多线程的时候,建议使用实现 Runnable接口的方法 ,java程序是单继承,多实现。