java基本线程机制
程序员文章站
2022-06-01 13:27:59
...
基本线程机制
方法一
实现Runnable
接口,编写run()
方法,在里面描述了要做的事。
class A implements Runnable{
public void run(){
// 编写任务脚本
}
}
注意:
如果在main()
方法里直接调用run()
方法,
它不由单独的线程驱动,而是分配给运行main()
方法的那个线程,
意味着如果多个实例依次调用run()
方法,那它们依然是顺序执行的。
A a1 = new A();
A a2 = new A();
a1.run();
a2.run();
因此我们把Runnable
对象作为参数,实例化一个Thread
对象,通过Thread
来驱动它。
Thread t1 = new Thread(new A());
Thread t2 = new Thread(new A());
t1.start();
t2.start();
方法二
继承Thread
类,重写run()
方法。
class A extends Thread{
public void run(){
// 编写任务脚本
}
}
然后调用它从Thread
中继承来的start()
方法。
A a1 = new A();
A a2 = new A();
a1.start();
a2.start();
我们通常推荐使用方法一,相比方法二,它有以下优势:
- 避免Java只能继承一个类的局限;
-
run()
中的代码可以被多个线程共享,代码和数据相互独立; - 适合多个相同代码的线程处理同一个资源的情况。
线程优先级
Java中每个线程都有一个优先级,决定了OS对线程的调度顺序
最小 MIN_PRIORITY = 1
默认 NORM_PRIORITY = 5
最大 MAX_PRIORITY = 10
优先级大的线程优先获得CPU分配,同等级的线程竞争CPU。
上一篇: NTL:基本线程池