一:线程
线程是一个进程中一段独立的控制流,一个进程可以有若干个线程。多进程设计中,各个进程间的数据块是独立的,他们之间的交流是通过信号,管道方式进行的。在线程设计中,各个线程之间不一定是独立的,同一个程序中的各个线程可以共享程序段、数据段等资源java中的同步机制有解决了线程之间数据完整性问题。
二:线程的创建
1:继承Thread类
直接实例化Thread类或者定义一个继承Thread类,重写run()方法,调用start()方法启动线程
/**
* 继承Thread类
* @author fjx
*
*/
public class TestThread extends Thread{
public TestThread(String name){
super(name);
}
/**重写run()方法**/
@Override
public void run() {
System.out.println("当前线程名称为:"+Thread.currentThread().getName());
}
public static void main(String[] args) {
Thread testThread=new TestThread("new Thread");//实例化Thread类
//启动线程 注:一个Thread类的start()方法不能让一个实力进行多次调用,否则会出现:IllegalThreadStateException异常
testThread.start();
}
}
输出结果:
主线程名称为:main
当前线程名称为:new Thread
2:实现Runnable接口
实例化实现Runnable接口的类,使用Thread构造方法对Thread对象进行创建并实例化,最后调用Thread实例中的start()方法启动线程。
/**
* 实现Runnable接口
* @author fjx
*
*/
public class TestRunnable implements Runnable{
/**重写run()方法**/
@Override
public void run() {
System.out.println("当前线程名称为:"+Thread.currentThread().getName());
}
public static void main(String[] args) {
TestRunnable testRunnable=new TestRunnable();//实例化实现Runnable接口的TestRunnable类
Thread thread = new Thread(testRunnable,"newRunnable");//使用构造方法对Thread进行创建并实例化
//启动线程 注:一个Thread类的start()方法不能让一个实力进行多次调用,否则会出现:IllegalThreadStateException异常
thread.start();
System.out.println("主线程名称为:"+Thread.currentThread().getName());
}
}
输出结果:
主线程名称为:main
当前线程名称为:newRunnable
3:继承Thread与实现Runnable创建线程有什么区别
1.继承Thread类,重写run()方法,创建该类对象,调用start方法启动线程;线程任务与线程对象绑定在一起,耦合性过高,不易维护;继承Thread类创建的线程无法再继承其他类;
2:实现Runnable接口,重写run方法,创建该类对象,将该类对象作为参数传给Thread类的构造方法,再创建Thread类对象并调用start方法开启线程;线程任务在实现Runnable接口的类中完成,线程对象是Thread类对象,线程任务与线程对象分离,耦合性低,便于维护;实现Runnable接口的类必要时可以继承与业务相关的其他类;