多线程的概念
打开一个应用程序,就是打开了一个进程,进程是线程的集合,为了让程序的执行更加高效,所以一个进程可以创建多个线程来"同时"执行互不干扰的方法。
创建多线程的两种常见方法
- 通过继承Thread类!
public class MyThread1 extends Thread {
@Override //重写Theard的run方法
public void run() {
for (int i = 0; i < 30; i++) {
System.out.printf(i+" ");
}
}
}
public class MyThread2 extends Thread{
@Override //重写Theard的run方法
public void run() {
for (int i = 0; i < 30; i++) {
System.err.printf(i+" ");
}
}
}
public class Client {
public static void main(String[] args) {//通过主函数调用start()方法
MyThread1 t1 = new MyThread1();//实例化线程1
MyThread2 t2 = new MyThread2();//实例化线程2
t1.start(); //线程1就绪
t2.start(); //线程2就绪
}
}
- 通过实现Runnable接口
public class Myrunnable1 implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<200;i++){
System.out.println(i);
}
}
}
public class Myrunnable2 implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<200;i++){
System.err.println(i);
}
}
}
public class Main {
public static void main(String[] args) {
Myrunnable1 runnable1 = new Myrunnable1();
Myrunnable2 runnable2 = new Myrunnable2();
Thread t1 = new Thread(runnable1);
t1.start();
Thread t2 = new Thread(runnable2);
t2.start();
}
}
多线程常用方法
- getId()
获取当前线程的id,id由cpu分配,从0开始 - getName()
获取当前线程的名字,线程名默认为Thread-N,也可以自定义 - setName()
创建线程时可以为线程起名 - currentThread()
获取当前线程对象 - sleep()
将当前对象休眠,使用时需要抛出异常或者try catch