一
現在的操作系統是多任務操作系統
進程是指一個內存中運行的應用程序
二
在Java中
使用java
當所有用戶線程執行完畢的時候
———————————MultiT
class MultiThread
{
public static void main(String[] args)
{
MyThread mt=new MyThread();
//mt
//mt
//設定為最高優先級後
//設定為最高優先級的線程
mt
int index=
while(true) //顯示結果與教程不同
{
if(index++==
break;
System
}
}
}
class MyThread extends Thread
{
public void run()
{
while(true)
{
System
yield(); //允許當前線程停止
//mt進程執行時
//切換進程到mt
}
}
}
//一個長時間處於等待狀態的線程也有可能被線程調度器調度
//打破高優先級線程始終獲有運行時間的狀態
——————————————————————————————————————
——————————MultiThread
class MultiThread
{
public static void main(String[] args)
{
MyThread mt=new MyThread();
//new Thread(mt)
//new Thread(mt)
//new Thread(mt)
//new Thread(mt)
mt
mt
mt
mt
//mt
//mt
//設定為最高優先級後
//設定為最高優先級的線程
//mt
int index=
while(true) //顯示結果與教程不同
{
// if(index++==
// break;
System
}
}
}
class MyThread //implements Runnable //extends Thread //使用外部類的方式
//使用內部類完成使用Runnable接口才能完成的兩個功能 a
{
int index=
private class InnerThread extends Thread //不想讓外部訪問其實現方法
{
public void run()
{
while(true)
{
System
}
}
}
Thread getThread()
{
return new InnerThread();
}
/*
public void run()
{
while(true)
{
System
//yield(); //允許當前線程停止
//mt進程執行時
//切換進程到mt
}
}
*/
}
//一個長時間處於等待狀態的線程也有可能被線程調度器調度
//打破高優先級線程始終獲有運行時間的狀態
//如果不需要修改Thread類的除了run方法外的其他方法
———————————————————————————————————————
———————————TicketsSystem
//多線程實現火車票的售票系統
class TicketsSystem
{
public static void main(String[] args) //運行結果與教程中不同
{
SellThread st=new SellThread();//創建四個線程訪問同一變量tickets
// 錯 SellThread st
new Thread(st)
//b為true
// | //解決辦法
try
{
Thread
}
catch(Exception e)
{
e
}
st
new Thread(st)
//new Thread(st)
//new Thread(st)
}
}
class SellThread implements Runnable //程序有點小問題
//可加上一個靜態方法sleep();它會拋出異常
{
int tickets=
//Object obj=new Object();//也可以聲明一個Thread對象
Thread th=new Thread();
boolean b=false;
public void run()
{
if(b==false)
{
while(true)
sell();
}
else
{
while(true)
{ //同步方法利用的是this所代表的對象的鎖
synchronized(this) //采用同步後
{ //這裡換th為this
///*
if(tickets>
{
try
{
Thread
}
catch(Exception e)
{
e
}
System
tickets
}
//*/
}
}
}
}
public synchronized void sell() //每個class也有一個鎖
{
if(tickets>
{
try
{
Thread
}
catch(Exception e)
{
e
}
System
tickets
}
}
}
————————————————————————————————————————
———————————TestWN
class Test
{
public static void main(String[] args)
{
Queue q=new Queue();
Producer p=new Producer(q);
Consumer c=new Consumer(q);
p
c
}
}
class Producer extends Thread
{
Queue q;
Producer(Queue q)
{
this
}
public void run()
{
for(int i=
{
q
System
}
}
}
class Consumer extends Thread
{
Queue q;
Consumer(Queue q)
{
this
}
public void run()
{
while(true)
{
System
}
}
}
class Queue //wait
{
int value;
boolean bFull=false;
public synchronized void put(int i)
{
if(!bFull)
{
value=i;
bFull=true;
notify();
}
try
{
wait();
}
catch(Exception e)
{
e
}
}
public synchronized int get()
{
if(!bFull)
{
try
{
wait();
}
catch(Exception e)
{
e
}
}
bFull=false;
notify();
return value;
}
}
————————————————————————————————————
————————————TestThread
class TestThread
{
public static void main(String[] args)
{
Thread
t
int index=
while(true)
{
if(index++==
{
t
t
break;
}
System
}
System
}
}
class Thread
{
private boolean bStop=false;
public synchronized void run()
{
while(!bStop)
{
try
{
wait(); //加入wait後
}
catch(Exception e)
{
//e
if(bStop)
return;
}
System
}
}
public void stopThread()
{
bStop=true;
}
}
——————————————————————————————————————
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27407.html