线程基础-java
Posted xiayuer0114
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程基础-java相关的知识,希望对你有一定的参考价值。
1.线程锁的三种方法,举例
package cn.itcast.thread.sync; /** * * @author Administrator * 对对象的实例加锁 */ public class SyncThread implements Runnable { //创建实例 static SyncThread instance=new SyncThread(); static int i=0; public void run() { // TODO Auto-generated method stub for (int j = 0; j < 100000; j++) { /* * * 方法一: * synchronized (instance) { i++; }*/ //对方法上锁 increase(); } } //方法二:加在方法上,如果不是static修饰的 ,要确保是同一个锁才能保证同步的进行,用static修饰的是方法三 private synchronized void increase() { // TODO Auto-generated method stub i++; //对成员变量的操作要加上锁 System.out.println(Thread.currentThread().getName()+"----------------"+i); } public static void main(String[] args) { Thread t1=new Thread(instance); Thread t2=new Thread(instance); Thread t3=new Thread(instance); t1.start();t2.start();t3.start(); try { t1.join(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("-----------最后的结果:"+i); } }
2.object.wait()
//代码需要写在锁中 //线程一 synchronized(object){ //锁既是监听器 object.wait(); //此句会使得当前线程等待,且释放监视器的所有权,等待被其他线程唤醒且释放了monitor之后 }
//线程二:
synchronized(object){ //锁既是监听器 object.notify(); //此句会唤醒一个等待的线程, }
以上是关于线程基础-java的主要内容,如果未能解决你的问题,请参考以下文章