第一:写一个类,集成Thread类,重写run方法,实例化这个类,调用strat方法
package test06;
public class T extends Thread{
public void run() {
for(;;)
System.out.println(1);
}
}
package test06;
public class Test {
public static void main(String[] args) {
T t = new T(); //这个就是new ,新建状态
t.start(); //runnable -->调用完之后就成了running
//然后再执行T里面run方法的1,执行完1。就是在执行下面的111,所以说叫多线程。
因为在调用strat的时候就分为两支,所以输出顺序不定。
for(;;)
System.out.println(111);
}
}
第二种:写一个类,实现Runnable接口,实现run方法,实例化Thread的类,实例化这个类,作为
参数传输Thread构造器,调用strat方法
package test06;
public class I implements Runnable{
public void run() {
for(;;)
System.out.println(222);
}
}
package test06;
public class Test {
public static void main(String[] args) {
T t = new T(); //这个就是new ,新建状态
t.start(); //runnable -->调用完之后就成了running
//然后再执行T里面run方法的1,执行完1。就是在执行下面的111,所以说叫多线程。
因为在调用strat的时候就分为两支,所以输出顺序不定
/ /new一个Thread类,调用构造方法
Thread t1 = new Thread(new I()); //new新建状态
t1.start();//runnable -->调用完之后就成了running
}
}
总结
因为每次不管继承还是实现都要写一个类,一个类要继承一个类,一个类要实现一个借口,这样很麻烦,用内部类来写多线程,比较简单一点
用匿名内部类来写多线程
继承类的方式
package test06;
public class Test {
public static void main(String[] args) {
//匿名内部类写多线程实现
new Thread(){
public void run(){
for(;;)
System.out.println(333);
}
}.start();
}
}
实现接口的方式
package test06;
public class Test {
public static void main(String[] args) {
//匿名内部类写多线程实现(实现接口的方式)
new Thread(new Runnable(){
public void run(){
for(;;)
System.out.println(444);
}
}).start();
}
}
package test06;
public class T extends Thread{
public void run() {
for(;;)
System.out.println(1);
}
}
package test06;
public class Test {
public static void main(String[] args) {
T t = new T(); //这个就是new ,新建状态
t.start(); //runnable -->调用完之后就成了running
//然后再执行T里面run方法的1,执行完1。就是在执行下面的111,所以说叫多线程。
因为在调用strat的时候就分为两支,所以输出顺序不定。
for(;;)
System.out.println(111);
}
}
第二种:写一个类,实现Runnable接口,实现run方法,实例化Thread的类,实例化这个类,作为
参数传输Thread构造器,调用strat方法
package test06;
public class I implements Runnable{
public void run() {
for(;;)
System.out.println(222);
}
}
package test06;
public class Test {
public static void main(String[] args) {
T t = new T(); //这个就是new ,新建状态
t.start(); //runnable -->调用完之后就成了running
//然后再执行T里面run方法的1,执行完1。就是在执行下面的111,所以说叫多线程。
因为在调用strat的时候就分为两支,所以输出顺序不定
/ /new一个Thread类,调用构造方法
Thread t1 = new Thread(new I()); //new新建状态
t1.start();//runnable -->调用完之后就成了running
}
}
总结
因为每次不管继承还是实现都要写一个类,一个类要继承一个类,一个类要实现一个借口,这样很麻烦,用内部类来写多线程,比较简单一点
用匿名内部类来写多线程
继承类的方式
package test06;
public class Test {
public static void main(String[] args) {
//匿名内部类写多线程实现
new Thread(){
public void run(){
for(;;)
System.out.println(333);
}
}.start();
}
}
实现接口的方式
package test06;
public class Test {
public static void main(String[] args) {
//匿名内部类写多线程实现(实现接口的方式)
new Thread(new Runnable(){
public void run(){
for(;;)
System.out.println(444);
}
}).start();
}
}