1 前言
在年前我定下学习知识点的两个步骤:先通过书本了解一个知识点的用法和功能,再敲代码熟悉该知识点。然而了解知识点后我就懒得去敲代码了,于是过完年后我想到通过写博客简单地记录学到的东西,也方便以后重温,最重要的是没有单纯只为了熟悉知识点而敲代码那么无聊。
2 java多线程
java可以通过继承java.lang包中的Thread类或实现Runnable接口来实现多线程。下面是两种实现方式。
2.1 Thread类
public class son extends Thread {//继承Thread类
private int name;
public son(int x){
name = x;
}
public void run() {//覆盖run,run是线程执行的起点
for(int i = 0; i < 3; i++) {
System.out.println(name);
}
}
}
public class c1 {
public static void main(String[] args) {
son son1 = new son(1);
son son2 = new son(2);
son1.start();//通过start调用run
son2.start();
System.out.println("main");
}
}
2.2 Runnable接口
public class son implements Runnable{//实现Runnable接口
private int name;
public son(int x){
name = x;
}
public void run() {//
for(int i = 0; i < 3; i++) {
System.out.println(name);
}
}
}
public class c1 {
public static void main(String[] args) {
son son1 = new son(1);//新建线程
son son2 = new son(2);
Thread t1 = new Thread(son1);//调用了构造方法Thread(Runnable target),接口可以看作特殊的类,这里使用了向上转型
Thread t2 = new Thread(son2);
t1.start();//通过start调用target.run()
t2.start();
System.out.println("main");
}
}
3 总结
多线程虽然表现为并行运行,但cpu还是串行执行代码的,在只有一个cpu的情况下,多线程的时间成本往往不比单线程低,反而因为创建线程需要额外的开销,但可以通过增加处理器来发挥多线程的优势,实现并发执行。