通过API发现,创建线程的方式有两种
1方式:继承Thread
步骤:
a.自定义一个线程类叫做MyThread继承成Thread
b.重写Run方法
c.创建对象
d.启动线程
2方式:创建一个线程去实现Runnable接口。 用该类去实现线程的run方法。
方式1:
public class Thread01 {
public static void main(String[] args) {
//main是主线程
//之前学的都是单线程,即单挑路径一直执行 下去
//第一个多线程
// for(int i=0;i<2000;i++) {
// System.out.println("我去哪里了?");
// }
MyThread01 mt1=new MyThread01();//创建一个新对象,新建这状态
mt1.start();//启动一个新的线程 就绪状态!=执行,只是进入队列,三个子线程随机分配时间执行
MyThread02 mt2=new MyThread02();
mt2.start();
MyThread03 mt3=new MyThread03();
mt3.start();
//子线程带的输出是随机的
}
}
class MyThread01 extends Thread {
public void run() {
for(int i=0;i<10000;i++) {
System.out.println("bbbbbbbbbbb");
}
}
}
class MyThread02 extends Thread{
public void run() {
for(int i=0;i<10000;i++) {
System.out.println("aaaaaaaaaaaaaaaaa");
}
}
}
class MyThread03 extends Thread{
public void run() {
for(int i=0;i<10000;i++) {
System.out.println("ccccccccccccccccccccccc");
}
}
}
方式2:
public class method2 {
//创建一个类实现Runnable接口的run方法,创建匿名Thread对象,Runnable对象作为参数,然后调用start方法进行启动
public static void main(String[] args) {
PrimeRun p=new PrimeRun();
new Thread(p).start();
new Thread(new Runnable(){
public void run() {
System.out.println("????/");
}
}).start();
}
}
class PrimeRun implements Runnable{
public void run() {
System.out.println("aaaaaaaaaaa");
}
}
线程的命名:
三种方式:
1.通过构造方法命名
2.在run方法内通过setName方法命名
3.使用类名调用setName方法进行命名
1.通过构造方法命名
Thread t1=new Thread(“sb1”) {
public void run() {
System.out.println(this.getName()+"—aaaaaa");
}
};
2.在run方法内通过setName方法命名
public void run() {
this.setName(“sb1”);
System.out.println(this.getName()+"—aaaaaa");
}
};
3.使用类名调用setName方法进行命名
Thread t1=new Thread(){
public void run(){
System.out.println(this.getName()+"-----aaaaaa");
}
};
t1.setName(“sb2”);