java 项目中默认会开启2个线程,第一主线程,第二个就是垃圾回收线程。多线程实际上就是cpu 不断切换线程,感觉上是同时进行的。
开起多线程的方法一:
写个类继承Thread 重写run 方法在run方法中执行线程代码,在主线程中创建类对象执行start 方法。注意是执行start 方法,start方法做了2件事情第一件事就是开启线程,第二件事情就是在线程中执行重写run 方法的代码。
public class Demo1 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
a A = new a();
A.start();
for (int i = 0; i < 10000; i++) {
System.out.println("i");
}
}
}
class a extends Thread{
@Override
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.println("run");
}
}
}
方法二:
实现写一个类runnable 接口重新run 方法。创建此类对象A,然后用对象A作为参数创建Thread对象B,再对象B调用start 方法开启线程。
public class Demo1 {
public static void main(String[] args) {
A a = new A();
Thread thread = new Thread(a);
thread.start();
for (int i = 0; i < 10000; i++) {
System.out.println("i");
}
}
}
class A implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.println("run");
}
}
}
方法三 匿名内部类 创建thread对象里面重写run方法直接调用start方法。
public class Demo1 {
public static void main(String[] args) {
new Thread() {
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.println("run");
}
};
}.start();
for (int i = 0; i < 10000; i++) {
System.out.println("i");
}
}
}
方法四 匿名内部类 创建thread对象A里面参数传一个接口runnable对象B,对象B里面重写run方法
对象A调用start方法。
public class Demo1 {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.println("run");
}
}
}
).start();
for (int i = 0; i < 10000; i++) {
System.out.println("i");
}
}
}
网友评论