一、创建线程的方法
1.继承Thread类
public class myThread extends Thread
{
public void run()
{
while(running)
{
code......//执行若干操作
sleep(100);
}
}
public static void main(String args[])
{
Thread t = new myThread();
code....//执行若干操作
}
}
2.实现Runable接口
import java.lang.Thread;
import java.lang.Object;
public class Sleep2 implements Runnable {
public static void main(String[] args) {
// TODO Auto-generated method stub
Runnable target = new Sleep2();
Thread myThread = new Thread(target);
myThread.start();
}
public void run() {
int i;
for(i = 0;i < 10;i++)
{
try {
Thread.sleep(2000);
System.out.println("i="+i);
System.out.println("Thread "+Thread.currentThread().getName()+ " completed");
} catch(InterruptedException e){}
}
}
}
二、
(1)sleep()函数会放弃处理器,暂停执行一段时间,进行阻塞。这会给较低优先级的线程一个运行的机会
(2)yield()函数只会给相同优先级线程一个执行的机会。
(3)线程启动必须调用start()方法。它会执行run()函数。
(4)静态的Thread方法currentThread()来获取对当前线程的引用。
(5)线程间通信的方法wait()和notify(): 当线程A调用wait()后,它不再执行,并放入相关对象的等待队列中,而notify()方法能释放等待队列中的第一个线程,其余的线程还留在队列中(如果有),notifyAll()方法能够释放所有线程。
(6)join():能够使当前执行的线程停下来等待,直至方法join所调用的那个线程结束,再恢复执行。
(7)suspend()与resume()强制挂起与唤醒一个进程。----易产生死锁
(8)synchronized()可以实现对代码段的互斥访问,但它必须作用于对象。