java中的线程机制

来源:互联网 发布:九洲盛世网络竞技 编辑:程序博客网 时间:2024/04/29 19:35

一、创建线程的方法

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 stubRunnable 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()可以实现对代码段的互斥访问,但它必须作用于对象。