本帖最后由 小石姐姐 于 2019-5-17 11:36 编辑
实现多线程方式有两种:
继承Thread类。
实现Runnable接口。
相比继承Thread类,实现Runnable接口的好处:
避免了Java单继承的局限性
适合多个相同程序的代码去处理同一个资源的情况,把线程和程序的代码、数据有效分离,较好的体现了面向对象的设计思想
实现多线程方式一:继承Thread类
实现步骤 定义一个类MyThread继承Thread类 在MyThread类中重写run()方法 创建MyThread类的对象 启动线程 [AppleScript] 纯文本查看 复制代码 public class MyThread extends Thread {
@Override
public void run() {
for(int i=0; i<100; i++) {
System.out.println(i);
}
}
}
public class MyThreadDemo {
public static void main(String[] args) {
MyThread my1 = new MyThread();
MyThread my2 = new MyThread();
// my1.run();
// my2.run();
//void start() 导致此线程开始执行; Java虚拟机调用此线程的run方法
my1.start();
my2.start();
}
}
run()方法和start()方法的区别? run():封装线程执行的代码,直接调用,相当于普通方法的调用 start():启动线程;然后由JVM调用此线程的run()方法 线程调度 static void sleep(long millis) | 使当前正在执行的线程停留(暂停执行)指定的毫秒数 | void join() | 等待这个线程死亡 | void setDaemon(boolean on) | 将此线程标记为守护线程,当运行的线程都是守护线程时,Java虚拟机将退出 |
线程的五种状态
|