多執行緒(join和yield)
阿新 • • 發佈:2019-01-28
/*
* 一.join:
* 當A執行緒執行到了b執行緒的join方法時,A執行緒就會等待,等B現成都執行完,A才會執行。
* 返回執行緒的:執行緒名,優先順序,執行緒組。
* 優先順序:搶資源的頻率。
*執行緒可以具有的最高優先順序。
*static int MAX_PRIORITY (10)
*執行緒可以具有的最低優先順序。
* static int MIN_PRIORITY (1)
* 分配給執行緒的預設優先順序。
暫停當前正在執行的執行緒物件,並執行其他執行緒。
*/
class Demo implements Runnable
{
public void run()
{
for(int x=0;x<70;x++)
{
System.out.println(Thread.currentThread().toString()+"----"+x);
Thread.yield();
}
}
}
public class JoinDemo {
public static void main(String args[]) throws InterruptedException
{
Demo d=new Demo();
Thread t1=new Thread(d);
Thread t2=new Thread(d);
t1.start();
//t1.setPriority(Thread.MAX_PRIORITY);
t2.start();
//t1.join();
for(int x=0;x<80;x++)
{
//System.out.println("main----"+x);
}
System.out.println("over");
}
* 一.join:
* 當A執行緒執行到了b執行緒的join方法時,A執行緒就會等待,等B現成都執行完,A才會執行。
* join可一用來臨時加入執行緒執行。
*二. toString方法:* 返回執行緒的:執行緒名,優先順序,執行緒組。
* 優先順序:搶資源的頻率。
*執行緒可以具有的最高優先順序。
*static int MAX_PRIORITY (10)
*執行緒可以具有的最低優先順序。
* static int MIN_PRIORITY (1)
* 分配給執行緒的預設優先順序。
*static int NORM_PRIORITY (5)
*三.static void yield()暫停當前正在執行的執行緒物件,並執行其他執行緒。
*/
class Demo implements Runnable
{
public void run()
{
for(int x=0;x<70;x++)
{
System.out.println(Thread.currentThread().toString()+"----"+x);
Thread.yield();
}
}
}
public class JoinDemo {
public static void main(String args[]) throws InterruptedException
{
Demo d=new Demo();
Thread t1=new Thread(d);
Thread t2=new Thread(d);
t1.start();
//t1.setPriority(Thread.MAX_PRIORITY);
t2.start();
//t1.join();
for(int x=0;x<80;x++)
{
//System.out.println("main----"+x);
}
System.out.println("over");
}
}
//開發中使用多執行緒,為了同時執行程式碼,如:
public class ThreadTest {
public static void main(String args[])
{
new Thread()
{
public void run()
{
for(int x=0;x<100;x++)
{
System.out.println(Thread.currentThread().getName()+"---"+x);
}
}
}.start();
for(int x=0;x<100;x++)
{
System.out.println(Thread.currentThread().getName()+"---"+x);
}
Runnable r=new Runnable()
{
public void run()
{
for(int x=0;x<100;x++)
{
System.out.println(Thread.currentThread().getName()+"---"+x);
}
}
};
new Thread(r).start();
}
}