在java中并发机制很重要,并发机制可以使程序执行多个线程,每一个线程对应一个功能,并以其他线程并发执行,在单线程中,代码按照调用顺序依次往下执行,要实现多线程就需要一个进程同时完成多段代码的操作。
多线程:即是一个程序运行时产生不单单一个线程
并发:CPU通过调度算法让用户觉得时同时执行,但不是真正的同时。
实现多线程的两种方式
1、继承Thread类,重写run()方法,在main方法调用start方法,如果不调用start方法线程是不会启动的。(currentThread返回的是当前正在执行的线程对象)代码示例如下
运行输出
第二种方式:实现Runnable接口的类然后实例化该类对象,使用构造方法创建Thread实例,调用Thread中的start()方法启动线程。(这里定义的是匿名内部类。)
输出结果
实现Runnable接口的类,使用Runnable接口启动线程主要流程如下:实现Runnable接口的类,实例化该类的对象,建立了Runnable对象,创建Thread实例,使用实例调用Thread类的start方法启动线程
线程的操作:线程的加入,(线程强制运行)线程强制运行期间,其他线程无法运行,需要等待加入的线程结束后才能开始继续运行其他线程。
定义一个实现Runnable接口的类
class ThreadJionDemo1 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 150; i++) {
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
}
主方法调用
public static void main(String[] args) {
ThreadJionDemo1 t1 = new ThreadJionDemo1();
Thread th = new Thread(t1,"加入的线程A");
th.start();//启动线程
for (int i = 0; i < 1500; i++) {
if(i>3){
try {
th.join();//线程加入,强制运行
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("主线程运行");
}
}
}
}
运行输出