Java_Thread

总述:线程很实用

thread is a thread of execution in a program.

longgetId()
Returns the identifier of this Thread.

获取它是第几条线

StringgetName()
Returns this thread's name.

获取线程的名

intgetPriority()
Returns this thread's priority.

获取线程的优先

voidinterrupt()
Interrupts this thread.

线程中断,和Thread.sleep更配

static voidsleep(long millis)
Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers.

线程暂睡毫

voidstart()
Causes this thread to begin execution; the Java Virtual Machine calls the runmethod of this thread.

线程开

static voidyield()
A hint to the scheduler that the current thread is willing to yield its current use of a processor.

静态方法,一个不常用的方法,让出线程时间,放个案

没找到synchronized的方法,这是一个很实用的方法,多用于同步块,保证系统的顺畅运行,从下面的案例可以看出他的用法


/**
 * 多线程并发安全问题
 * 
 * 当多个线程并发运行操作同一数据时,由于线程切换的
 * 时机不可控,可能会导致操作该数据时的过程未按照
 * 程序设计的执行顺序运行,导致操作出现混乱,严重时
 * 可能会导致系统瘫痪。
 * @author soft01
 *
 */
public class SyncDemo09 {
	public static void main(String[] args) {
		 final Table table = new Table();
		 Thread t1 = new Thread() {
			 public void run() {
				 
				 while (true) {
					int bean = table.getBean();
					Thread.yield();
					System.out.println(getName() + ":" + bean);
				}
			 }
		 };
		 Thread t2 = new Thread() {
			 public void run() {
				 while(true) {
					 int bean = table.getBean();
					 Thread.yield();
					 System.out.println(getName() + ":" + bean);
				 }
			 }
		 };
		 t2.start();
		 t1.start();
	}
	
	 
}
class Table{
	private int beans = 20;
	/**
	 * 当一个方法用synchronized修饰后,那么这方法
	 * 变为“同步方法”,多个线程不能同时进入方法内容
	 * 运行,而必须有顺序的一个一个运行,这样就可以
	 * 避免并发安全问题
	 * 
	 * 在方法上使用synchronized,那么同步监视器对象
	 * 就是该方法所属对象,即:方法中看到的this
	 * @return
	 */
	public synchronized int getBean() {
		if(beans == 0) {
			throw new RuntimeException("没有豆子了!");
		}
		//模拟线程切换
		Thread.yield();
		return beans -= 1;
	}
}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页