多线程就是指一个进程内有多个线程。进程是只一个运行中的程序,线程则是只进程中一个独立的执行单位。进程至少有一个线程。 例如:一台电脑同时运行了多个软件,这是多个进程。以电脑管家为例,它可以在查杀病毒的同时清理垃圾,这就是一个进程内有多个线程。
多线程的创建有两种方式。一种是实现Runnable接口,另一种是继承Thread类。
步骤:
创建一个线程类实现Runnable接口,并实现run()方法。run()方法就是该线程的任务。通过Thread对象,调用start对象,开启线程。代码如下:
public class MyThread implements Runnable{ String threadName; public MyThread(String threadName){ this.threadName=threadName; } @Overrride public void run(){ for(int i=1;i<=5;i++){ System.out.println(threadName+"第"+i+"次执行。") } } } public class ThreadDemo{ public static void main(String[] args){ Mythread myThread01=new MyThread("线程1"); Mythread myThread02=new Mythread("线程2"); Thread thread01=new Thread(myThread01); Thread thread02=new Thread(myThread02); thread01.start(); thread02.start(); } }执行结果:
***注意:***线程需要通过start方法开启,如果直接调用run()方法,实际上就只是在main方法中调用run方法罢了,并没有开启多线程。 例如:我将start方法改为执行run方法。
public class ThreadDemo{ public static void main(String[] args){ //实现Runnable接口 MyThread myThread01=new MyThread("线程1"); MyThread myThread02=new MyThread("线程2"); Thread thread01=new Thread(myThread01); Thread thread02=new Thread(myThread02); thread01.run(); //不执行start() thread02.run(); } }结果如下:
步骤:
创建一个线程类继承Runnable接口,并重写run()方法。创建线程对象,并调用start()开启线程。代码如下:
public class MyThread01 extends Thread{ String threadName; public MyThread(String threadName){ this.threadName=threadName; } @Override public void run(){ for(int i=1;i<=5;i++){ System.out.println(threadName+"第"+i+"次执行。"); } } } public Class ThreadDemo{ public static void main(String[] args){ MyThread01 thread01=new MyThread01("线程1 "); MyThread01 thread02=new MyThread01("线程2 "); thread01.start(); thread02.start(); } }结果如下:
联系: 首先打开Thread类,会发现Thread类也实现T了Runnable接口。 用户不论如何都要重写run()方法。
区别: 继承Runnable接口更常用,可以避免单继承的限制,也更适合资源共享。
