3个回答
展开全部
java同步指的是synchronized机制,而非synchronized的都是异步,弄懂同步的概念就大致明白了两者的差别。
有关同步:
synchronized用来修饰一个方法或者一个代码块,它用来保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
五、以上规则对其它对象锁同样适用。
示例代码:
public class Thread1 implements Runnable {
public void run() {
synchronized(this) {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
}
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread ta = new Thread(t1, "A");
Thread tb = new Thread(t1, "B");
ta.start();
tb.start();
}
}
结果:
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4
有关同步:
synchronized用来修饰一个方法或者一个代码块,它用来保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
五、以上规则对其它对象锁同样适用。
示例代码:
public class Thread1 implements Runnable {
public void run() {
synchronized(this) {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
}
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread ta = new Thread(t1, "A");
Thread tb = new Thread(t1, "B");
ta.start();
tb.start();
}
}
结果:
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4
展开全部
同步可以用在多个子线程访问同一个数据库表时,这是要保证数据的一致性和完整性,在数据访问层就要加同步锁啦,不加锁可能就会报数据库被锁的异常;异步一般用在耗时的操作中,比如:联网取数据,这个数据量比较大,很要点时间,而我在取数据时又想继续做别的事情,等我把别的事情做完在来处理联网得到的数据。异步操作就等于帮你节约了一些时间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
深入的不太懂,但是大概粗浅一点我说下我的理解。
后台查询完成之后返回到前台:可以理解为同步,页面上的数据是一起刷新的。
异步:比如说我们提交什么东西的时候,验证身份证是否合法,我们可以用ajax异步进行验证、
就是不用刷新整个页面,直接从后台拿数据到前台。页面不用重新加载数据。
上传文件可以用,不过有一个上传文件的小插件非常好用。好像是jquery-fiel就是一个jquery的上传插件用的ajax实现
后台查询完成之后返回到前台:可以理解为同步,页面上的数据是一起刷新的。
异步:比如说我们提交什么东西的时候,验证身份证是否合法,我们可以用ajax异步进行验证、
就是不用刷新整个页面,直接从后台拿数据到前台。页面不用重新加载数据。
上传文件可以用,不过有一个上传文件的小插件非常好用。好像是jquery-fiel就是一个jquery的上传插件用的ajax实现
追问
syncronize是什么怎么用
追答
单例吧
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询