- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Java 线程的优先级(setPriority)案例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
线程可以划分优先级,优先级高的线程得到的CPU资源比较多,也就是CPU优先执行优先级高的线程对象中的任务.
设置线程优先级有助于帮助线程规划器确定下一次选中哪一个线程优先执行.
java中优先级分为1-10个级别 。
线程优先级的继承特性 例如a线程启迪b线程,则b线程的优先级与a的一样.
代码说话:(很简单) 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public
class
MyThread1
extends
Thread {
@Override
public
void
run() {
System.out.println(
"MyThread1 run priority="
+
this
.getPriority());
MyThread2 thread2 =
new
MyThread2();
thread2.start();
}
}
public
class
MyThread2
extends
Thread {
@Override
public
void
run() {
System.out.println(
"MyThread2 run priority="
+
this
.getPriority());
}
}
public
static
void
main(String[] args) {
System.out.println(
"main thread begin priority="
+ Thread.currentThread().getPriority());
Thread.currentThread().setPriority(
6
);
System.out.println(
"main thread end priority="
+ Thread.currentThread().getPriority());
MyThread1 thread1 =
new
MyThread1();
thread1.start();
}
|
优先级具有规则性 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
public
class
MyThread1
extends
Thread {
@Override
public
void
run() {
long
beginTime = System.currentTimeMillis();
long
addResult =
0
;
for
(
int
j =
0
; j <
10
; j++) {
for
(
int
i =
0
; i <
50000
; i++) {
Random random =
new
Random();
random.nextInt();
addResult = addResult + i;
}
}
long
endTime = System.currentTimeMillis();
System.out.println(
"★★★★★thread 1 use time="
+ (endTime - beginTime));
}
}
public
class
MyThread2
extends
Thread {
@Override
public
void
run() {
long
beginTime = System.currentTimeMillis();
long
addResult =
0
;
for
(
int
j =
0
; j <
10
; j++) {
for
(
int
i =
0
; i <
50000
; i++) {
Random random =
new
Random();
random.nextInt();
addResult = addResult + i;
}
}
long
endTime = System.currentTimeMillis();
System.out.println(
"☆☆☆☆☆thread 2 use time="
+ (endTime - beginTime));
}
}
public
static
void
main(String[] args) {
for
(
int
i =
0
; i <
5
; i++) {
MyThread1 thread1 =
new
MyThread1();
thread1.setPriority(
1
);
thread1.start();
MyThread2 thread2 =
new
MyThread2();
thread2.setPriority(
10
);
thread2.start();
}
}
|
高优先级的线程总是先执行完 。
线程的优先级和代码的执行顺序没有关系 。
优先级具有随机性 。
一般优先级较高的线程先执行run()方法,但是这个不能说的但肯定,因为线程的优先级具有 “随机性”也就是较高线程不一定每一次都先执行完.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
public
class
MyThread1
extends
Thread {
@Override
public
void
run() {
long
beginTime = System.currentTimeMillis();
for
(
int
i =
0
; i <
1000
; i++) {
Random random =
new
Random();
random.nextInt();
}
long
endTime = System.currentTimeMillis();
System.out.println(
"★★★★★thread 1 use time="
+ (endTime - beginTime));
}
}
public
class
MyThread2
extends
Thread {
@Override
public
void
run() {
long
beginTime = System.currentTimeMillis();
for
(
int
i =
0
; i <
1000
; i++) {
Random random =
new
Random();
random.nextInt();
}
long
endTime = System.currentTimeMillis();
System.out.println(
"☆☆☆☆☆thread 2 use time="
+ (endTime - beginTime));
}
}
public
static
void
main(String[] args) {
for
(
int
i =
0
; i <
5
; i++) {
MyThread1 thread1 =
new
MyThread1();
thread1.setPriority(
5
);
thread1.start();
MyThread2 thread2 =
new
MyThread2();
thread2.setPriority(
6
);
thread2.start();
}
}
|
守护线程介绍:
java 中有两种线程 一个是用户线程,一个是守护(Daemon)线程 。
典型的守护线程就是垃圾回收线程,如果进程中没有非守护线程了,则守护线程自动销毁.
守护线程作用就是为其他线程的运行提供便利的服务,比如GC.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public
class
MyThread
extends
Thread {
private
int
i =
0
;
@Override
public
void
run() {
try
{
while
(
true
) {
i++;
System.out.println(
"i="
+ (i));
Thread.sleep(
1000
);
}
}
catch
(InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public
static
void
main(String[] args) {
try
{
MyThread thread =
new
MyThread();
thread.setDaemon(
true
);
//设置守护线程
thread.start();
Thread.sleep(
5000
);
System.out.println(
"我离开thread对象也不再打印了,也就是停止了!"
);
}
catch
(InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
|
到此这篇关于Java 线程的优先级(setPriority)案例详解的文章就介绍到这了,更多相关Java 线程的优先级(setPriority)内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/qq_35400008/article/details/80219947 。
最后此篇关于Java 线程的优先级(setPriority)案例详解的文章就讲到这里了,如果你想了解更多关于Java 线程的优先级(setPriority)案例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在上 Java 2 类(class),我们的作业是展示如何为多个线程分配不同的优先级。 我正在尝试操作书中的示例代码以查看它是否有效,但我遇到了编译器错误:无法在 TaskExecutor.jav
我从 here 做示例代码.我得到结果: Thread[Thread-3,1,main]: 5 Thread[Thread-0,10,main]: 5 Thread[Thread-2,1,main]:
我在网上阅读有关 Thread 的 setPriority() 的内容,发现了以下内容: final void setPriority(int level) Here, level specifies
我在 SpannableStringBuilder 中几乎没有重叠跨度。我想定义将它们实现到文本的顺序。Spannable 有 int 标志 int SPAN_PRIORITY = 16711680;
这是一道我做错的测试题,我对 setPriority(Thread.MIN_Priority) 和 setPriority(1) 的不同感到困惑。 问:假设您的多线程程序有一个后台线程(称为 batc
我把通知优先级设置为最大,但它仍然在通知区域的底部。 我的代码: NotificationCompat.Builder builder = new NotificationCompat.Builder
线程可以划分优先级,优先级高的线程得到的CPU资源比较多,也就是CPU优先执行优先级高的线程对象中的任务。 设置线程优先级有助于帮助线程规划器确定下一次选中哪一个线程优先执行。 java中优先级
setPriority()方法的一般形式是 final void setPriority(int level) 我的问题是 setPriority() 方法是否可以由扩展 Threa
我有一些服务启动 Google Play 服务位置/Activity 的代码,当调用 Activity Intent 时,我想更改 setPriority用于定位服务。 // Location
我在我的服务器上使用 CentOS 7 和 cPanel。我想弄清楚如何将 Perl 任务的优先级设置为低优先级。 当我调用 setpriority(PRIO_PROCESS, $$, 19) 时,任
我正在尝试在 Android 上设置通知,但我收到 Visual Studio 发出的警告 Notification.Builder.SetPriority()已经过时了。 有替代品吗?安卓提示Set
本文整理了Java中org.geotools.util.WeakCollectionCleaner.setPriority()方法的一些代码示例,展示了WeakCollectionCleaner.se
您好,我的应用程序有问题: SetAppThreadPriority: setpriority failed with error 45 我正在使用 Xcode 6,我不确定这是否是问题所在。 最佳
当我运行这段代码时,它给了我IllegalArgumentException,然后执行了整个代码,但是线程 t 的名称只是默认值,而不是代码中的 Mark。 可能是什么原因? Exceptio
我的调度策略是 SCHED_OTHER。使用 setpriority() 更改 nice 值是否会产生任何影响。当我使用它时,我看不出有什么不同。 最佳答案 答案是不。在这种情况下,setpriori
从 Jelly Bean 开始,可以为通知设置优先级。这样你甚至可以设置 PRIORITY_MIN 来隐藏状态栏上的通知图标。我读到了它,它非常简单,你只需要使用这个: MyNotification.
给定 - 线程的线程 ID。 要求 - 设置线程 id 的 Linux 优先级。 约束 - 不能使用 setpriority() 我试过在下面使用 pthread_setschedprio(pthre
本文整理了Java中org.sonatype.maven.polyglot.yaml.YamlMapping.setPriority()方法的一些代码示例,展示了YamlMapping.setPrio
java.lang.Thread.setPriority 和 android.os.Process.setThreadPriority 它们有什么不同? 首先,在java.lang.Thread类中,
如果我有这样的代码: Runnable r = ...; Thread thread = new Thread(r); thread.setPriority((Thread.MAX_PRIORITY
我是一名优秀的程序员,十分优秀!