当前位置:学者斋 >

计算机 >java语言 >

Java多线程常用的几个关键字

Java多线程常用的几个关键字

本文是本站小编搜索整理的关于Java多线程常用的几个关键字,供参考借鉴,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

Java多线程常用的几个关键字

  一、同步(synchronized)和异步(asynchronized)

1、同步(synchronized)简单说可以理解为共享的意思,如果资源不是共享的,就没必要进行同步。设置共享资源为同步的话,可以避免一些脏读情况。

2、异步(asynchronized)简单说可以理解为独立不受到其他任何制约。

举个例子:

线程1调用了带有synchronized关键字的方法methodA,线程2调用了异步方法methodB,出现的现象是同时控制台输出 t1,t2。

package ;

/**

* 多线程之对象同步锁和异步锁Demo

*

* @author ietree

*/

public class SynAndAsynDemo {

public static void main(String[] args) {

final SynAndAsynDemo mo = new SynAndAsynDemo();

Thread t1 = new Thread(new Runnable() {

@Override

public void run() {

odA();

}

},"t1");

Thread t2 = new Thread(new Runnable() {

@Override

public void run() {

odB();

}

},"t2");

t();

t();

}

// 方法A

public synchronized void methodA(){

try {

tln(entThread()ame());

// 休眠4秒

p(4000);

} catch (InterruptedException e) {

tStackTrace();

}

}

// 方法B

public void methodB(){

tln(entThread()ame());

}

}

线程1调用了带有synchronized关键字的方法methodA,线程2调用了带有synchronized关键字的方法methodB,出现的.现象是首先输出t1,等待4秒之后再输出t2。

package ;

/**

* 多线程之对象同步锁和异步锁Demo

*

* @author ietree

*/

public class SynAndAsynDemo {

public static void main(String[] args) {

final SynAndAsynDemo mo = new SynAndAsynDemo();

Thread t1 = new Thread(new Runnable() {

@Override

public void run() {

odA();

}

},"t1");

Thread t2 = new Thread(new Runnable() {

@Override

public void run() {

odB();

}

},"t2");

t();

t();

}

// 方法A

public synchronized void methodA(){

try {

tln(entThread()ame());

// 休眠4秒

p(4000);

} catch (InterruptedException e) {

tStackTrace();

}

}

// 方法B

public synchronized void methodB(){

tln(entThread()ame());

}

}

结论:

在第一段代码中t1线程先持有object对象的Lock锁,t2线程可以以异步的方式调用对象中的非synchronized修饰的方法,所以同时输出;

在第二段代码中t1线程先持有object对象的Lock锁,t2线程如果在这个时候调用对象中的同步(synchronized)方法则需等待,也就是同步。

  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/java/lwk9or.html