本节开始介绍JAVA中的多线程技术.当一个进程要同时执行多个程序时,就需要使用多线程技术.
线程是指一个进程中在执行一段程序时需要的类似于员工的东西。专业术语就是进程中单一顺序的控制流。一个进程如果要运行一段程序,那么它就会让一个线程去执行。
一个进程如果要同时执行多个任务。那么就需要创建多个线程来分别执行。这就是多线程。
主线程
比如这么一段代码
public static void main(String[] args) {
for(int i = 1;i<10000;i++){
System.out.println("循环很长的线程");
}
System.out.println("想同时执行的程序");
}
JAVA程序是从这个main方法开始从上往下执行.这个方法执行的程序也被称为主线程。
但这段代码中,for循环的持续时间比较长.此时我想在执行for循环的同时把for循环后的语句也一起执行.此时就需要另外在开一条线程来执行。
继承Thread类实现多线程
1,编写一个类继承Thread,并重写run()方法
public class ThreadDemo extends Thread{
//重写run方法
@Override
public void run() {
for(int i = 1;i<5;i++){
System.out.println("线程");
}
}
}
2,在主线程中创建该线程对象并调用start()方法启动线程
public static void main(String[] args) throws InterruptedException {
ThreadDemo threadDemo = new ThreadDemo();
threadDemo.start();//启动线程
for(int i = 1;i<5;i++){
System.out.println("主线程");
}
}
然后执行,出现以下情况
你发现还是主线程先运行,自己创建的后运行。可能是这个主线程CPU抢的厉害在加上循环的次数少。手动的给它阻塞一下。使用Thread的sleep()方法
如下代码:
public static void main(String[] args) throws InterruptedException {
ThreadDemo threadDemo = new ThreadDemo();
threadDemo.start();
for(int i = 1;i<5;i++){
System.out.println("主线程");
Thread.sleep(1L);//使用此方法手动让主线程睡眠1毫秒
}
}
然后再次执行
这样继承Thread的方式创建线程就能实现同时做多件事的效果了。我同时执行了两个for循环
到此继承Thread方式实现线程就介绍完了。
实现Runnable接口实现多线程
1,编写一个类实现Runnable接口并重写run方法
public class ThreadDemo implements Runnable{
//重写run()方法
@Override
public void run() {
for(int i = 1;i<5;i++){
System.out.println("Runnable线程");
}
}
}
2,主线程中,创建一个Runnable实现类对象.然后在创建一个Thread对象把Runnable实现类对象作为参数传入到Thread的构造方法中.最后在使用start()方法执行线程
public static void main(String[] args) throws InterruptedException {
Runnable threadDemo = new ThreadDemo();//创建Runnable实现类对象
Thread thread = new Thread(threadDemo);//创建Thread对象并把Runnable实现类对象作为参数传入
thread.start();//启动线程
for(int i = 1;i<10;i++){
System.out.println("主线程");
}
}
执行,然后出现类似以下结果
这样也实现了同时执行了多件事情。这里同时执行了两个for而不是一个一个执行
到这实现Runnable接口的方式就介绍完了
总结
1,多线程是什么?
一个进程要同时执行多个任务,此时就需要多个线程来分别执行。这是多线程
2,继承Thread方法实现多线程步骤
(1)编写一个类继承Thread并重写run()方法
(2)主线程创建继承了Thread类的对象,并调用start()方法启动线程即可
3,实现Runnable接口实现多线程步骤
(1)编写一个类实现Runnable并重写run()方法
(2)主线程创建该Runnable实现类的对象,在创建一个Thread()对象并把这个Runnable实现类对象做为参数传入。最后在调用start()方法启动线程即可
–>补充:多线程中的同时是鉴于我们肉眼上看到的效果。在实际的程序里面是CPU在多个线程之间进行了高速切换来达到同时执行多个线程的效果.