java中如何做線程的優先順序


{
publicMyMoreThread()
{
super();
}
publicMyMoreThread(Stringname)
{
super(name);
}
publicvoidrun()
{
for(inti=0;i<10;i++)
{
System.out.println(super.getName()+":"+i);
}
}
}
publicclassPriorityTest
{
publicstaticvoidmain(String[]args)
{
MyMoreThreadthread1=newMyMoreThread("第1個線程");
MyMoreThreadthread2=newMyMoreThread("第2個線程");
thread1.setPriority(Thread.MIN_PRIORITY);
thread2.setPriority(Thread.MAX_PRIORITY);
thread1.start();
thread2.start();
}
}

Ⅱ java線程優先順序有什麼意義




》》。。。而sleep之後就會隨機排序了,優先順序此時就不起作用了,有沒有解決的辦法?
其中一個辦法是讓每一個線程記得必須比它先完成的另一個線程,
然後在必要時強制它放棄執行一直到那另一個線程執行完為止。 比如:

class CustomThread extends Thread {
private Thread 先完;

CustomThread(String name, Thread 先完) {
super(name);
this.先完 = 先完;
}

public void run() {
System.out.println(this.getName());
try {
sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}

if (先完 != null)
try {
先完.join();
} catch (InterruptedException e) {}

System.out.println("NAME: " + this.getName() + " Bye");
}
}

class MultiThread {
public static void main(String args[]) throws InterruptedException {
CustomThread thread1 = new CustomThread("first",null);
CustomThread thread2 = new CustomThread("second",thread1);
CustomThread thread3 = new CustomThread("third",thread2);
CustomThread thread4 = new CustomThread("fourth",thread3);
thread1.setPriority(Thread.MAX_PRIORITY);
thread2.setPriority(Thread.MAX_PRIORITY-1);
thread3.setPriority(Thread.MAX_PRIORITY-2);
thread4.setPriority(Thread.MAX_PRIORITY-3);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
}
}

4 等 3、3 等 2、。。。 串聯成單一線程了,所以如果情況允許的話,
把所有必須順序執行的任務集合在單一線程里(比如留在 main 里)是另一個辦法。

》》。。。優先順序到底有什麼用處?
輕易地讓程序即使在非常忙碌的時候也能迅速處理使用者的輸入(該輸入也許是調整某項操作的優先順序:)、編寫游戲時更方便地實現戰場上級別較高的一方優先攻擊、等等。


Ⅲ java 如何設置線程的優先順序

{
MyThread1(Stringname){
super(name);
}

@Override
publicvoidrun(){
for(inti=0;i<10000;i++){
System.out.println(getName()+":"+i);
}
}

}


{
MyThread2(Stringname){
super(name);
}

@Override
publicvoidrun(){
for(inti=0;i<10000;i++){
System.out.println(getName()+":"+i);
}
}

}


publicclassTest{
publicstaticvoidmain(String[]args){
MyThread1t1=newMyThread1("t1");

MyThread1t2=newMyThread1("t2");
t1.setPriority(Thread.NORM_PRIORITY+3);
t1.start();
t2.start();
}

}

Ⅳ Java如何獲得運行線程的優先順序

package com.yii;public class GettingThreadPriority extends Thread {
private int countDown = 5;
private volatile double d = 0;

public GettingThreadPriority(int priority) {
setPriority(priority);
start();
}

public String toString() {
return super.toString() + ": " + countDown;
}

public void run() {
while (true) {
for (int i = 1; i < 100000; i++)
d = d + (Math.PI + Math.E) / (double) i;
System.out.println(this);
if (--countDown == 0)
return;
}
}

public static void main(String[] args) {
new GettingThreadPriority(Thread.MAX_PRIORITY);
for (int i = 0; i < 5; i++) {
new GettingThreadPriority(Thread.MIN_PRIORITY);
}
}}

Ⅳ java 裡面,主線程的優先順序可以設置嗎

如果你是要主線程高於子線程的話 .
個人理解 因為我剛學 .直接改主線程的對象 然後 改子線程 優先順序
public class ThreadDemo extends Thread{
public void run() {

System.out.println(currentThread().getName()+ "-" +"優先順序為:"+currentThread().getPriority());

}

public static void main(String [] args) {
Thread t1 = new Thread();
Thread t = new Thread( new ThreadDemo()); //為ThreadDemo()的子線程
t.setPriority(10); //當前子線程對象 優先順序10
Thread.currentThread().setPriority(1); //當前主線程為優先為1
t.start(); //輸出當前子線程
t1.start(). //輸出主線程
}

上次我的理解有誤,特地來來補充
直接聲明 Thread 對象就是主線程

如果向設置主線程的優先順序
可以直接
Thread.currentThread().setPriority(線程優先順序);
就是當前主線程的優先順序

如果想要在控制台輸出的話 可以直接
getPriority //get你要輸出的線程

Ⅵ java線程中的優先順序問題

樓主請記住一點,多線程的執行本身就是多個線程的交換執行,並非同時執行,執行的優先順序只是他執行的概率。
例如原本優先順序一樣,那麼兩個線程的執行的概率都為50%。現在我們提高其中一個,那麼一個為60%的概率搶到進入CPU執行的機會,另一個是依舊是40%。執行完一次之後又要重新搶佔CPU。但是40%概率進入的線程也有可能搶到,雖然概率低了點,但總會有他執行的機會,萬一次次都抽中40%的概率呢?所以你要正確理解線程和線程之間的優先順序

Ⅶ JAVA多線程優先順序運行順序的問題

這個。。你不必糾結。。
深入說的話,其實。。很深。。
首先說 線程優先順序,並不能保證優先順序高的先運行,也不保證優先順序高的更多的分配CPU時間,只是對系統的建議而已,到底運行哪個,是操作系統決定的,都不是java說了算的。
另外java只能保證在線程內部看起來是順序執行你的代碼的,並不能保證從其他線程看來這個是按照你編碼順序執行的。。