明天开始就不学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();
}
}