明天開始就不學JAVA了,總結一下,覺得自己學的好濫呀,什麼也沒學會,今天寫老師做的題就很吃力,看了好多資料,還就是寫的不如意,覺得好多知識點都沒有學到;
哎,吃力呀,雖然從明天開始不講了,但是還是要學的,我在JAVA上的發展空間還是巨大的;必須再專研一段時間;
今天所學多線程的互斥: 在Java語言中,為保證線程對共用資源操作的完整性,用關鍵字synchronized為共用資源加鎖來解決這個問題。這個鎖使得共用資源對線程是互斥操作的,稱為互斥鎖。
synchronized可修飾一個代碼塊或一個方法,使修飾對象在任一時刻只能有一個線程訪問。從而提供了程式的非同步執行功能。使用synchronized的形式為:
多線程的同步: 實現同步需要在這些線程之間相互連訊。Java提供了方法wait()和notify()等來使線程之間相互交談。一個線程可以進入某一個對象的synchronized方法進入等待狀態,直到其他線程顯式地將它喚醒。可以有多個線程進入同一個方法並等待同一個喚醒訊息。
下面是一個小的時鐘每隔一秒鐘重新整理一次:
import java.awt.*;
import java.applet.*;
import java.util.Date;
public class Clock extends Applet implements Runnable{
Thread clockThread;
Font font;
public void init(){
font=new Font("TimesRoman",Font.BOLD,64);
}
public void start(){
if (clockThread==null){
clockThread = new Thread(this,"Show time");
clockThread.start();
}
}
public void run(){
while (clockThread!=null) {
repaint();
try {
clockThread.sleep(1000);
}catch (InterruptedException e){
}
}
}
public void paint(Graphics g){
Date now = new Date();
g.setFont(font);
g.setColor(Color.red);
g.drawString(now.getHours() + ":" +
now.getMinutes()+ ":" +
now.getSeconds(),5,50);
}
public void stop(){
clockThread.stop();
}
}