主方法是单线程的;
多线程的实现方式
类Thread java.lang包下 实现Runnable接口
线程是程序中的执行线程,Java虚拟机允许应用程序并发的运行多个执行线程
创建线程: (1)将类声明为Thread的子类,该子类重写Thread类的Run方法,接下来可以分配并启动孩子类的实例
* 四步:1) 继承Thread 2)重写run()方法 3)创建对象 4)启动
(2)声明实现Runnable接口的类,该类实现run方法,然后可以分配该类的实例,在创建Thread时作为一个参数来传递并启动。
四步:1)实现Runnable类 2)实现run()方法 3)创建对象 4)创建Thread对象
方法 :static Thread currentThread();返回对当前正在执行的线程对象的引用
方法一实现
public class MyThreadDemo1 extends Thread {
public void run() {
for(int i=0;i<100;i++) {
System.out.println(getName()+":"+i);
}
}
}
public class ThreadDemo {
public static void main(String[] args) {
//线程1
MyThreadDemo1 mt=new MyThreadDemo1();
mt.setName("线程1");
mt.start();
//线程2
MyThreadDemo1 mt2=new MyThreadDemo1();
mt2.setName("线程2");
mt2.start();
}
}
方法二实现
package Runnable;
//方法2
public class RunnableDemo implements Runnable{
int num;
public RunnableDemo(int num) {
this.num=num;
}
@Override
public void run() {
for(int i=0;i<100;i++) {
//Thread t=Thread.currentThread();
//String s=t.getName();
System.out.println(Thread.currentThread().getName()+":"+i);//链式编程
}
// TODO 自动生成的方法存根
}
}
public class RunnableTest {
public static void main(String[] args) {
//method1();
RunnableDemo rd=new RunnableDemo(100);
Thread t=new Thread(rd);
t.setName("线程1");
t.start();
//线程2
Thread t2=new Thread(rd);
t2.setName("线程2");
t2.start();
}
private static void method1() {
//线程1
RunnableDemo rd=new RunnableDemo(100);
Thread t=new Thread(rd);
t.setName("线程1");
t.start();
//线程2
RunnableDemo rd2=new RunnableDemo(200);
Thread t2=new Thread(rd2);
t.setName("线程2");
t.start();
}
}
网友评论