/*
* 线程同步与死锁
* 1.同步代码块
* 2.同步方法
* 线程同步会降低性能的问题,但是提高数据安全性。
*
* 同步准则:
* 1、是代码块保持简短,跟线程变化没有关系数据移出去处理;
* 2、不要阻塞。如inputstream.read();;
* 3、在持有锁的时候,不要对其他对象调用方法。
*/
public class MySyncDemo {
public static void main(String[] args){
MyThread mythread=new MyThread();
Thread t1=new Thread(mythread,"TT11");
Thread t2=new Thread(mythread,"TT22");
t1.start();
t2.start();
}
}
class MyThread implements Runnable{
Object obj=new Object();//同步对象
@Override
public void run() {
this.domthod();
/*
* 同步代码块
*/
/*synchronized(obj){
System.out.println(Thread.currentThread().getName()+" do something");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" done");
}
*/
}
/*
* 同步方法
*
*/
public synchronized void domthod(){
System.out.println(Thread.currentThread().getName()+" do something");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" done");
}
}
* 线程同步与死锁
* 1.同步代码块
* 2.同步方法
* 线程同步会降低性能的问题,但是提高数据安全性。
*
* 同步准则:
* 1、是代码块保持简短,跟线程变化没有关系数据移出去处理;
* 2、不要阻塞。如inputstream.read();;
* 3、在持有锁的时候,不要对其他对象调用方法。
*/
public class MySyncDemo {
public static void main(String[] args){
MyThread mythread=new MyThread();
Thread t1=new Thread(mythread,"TT11");
Thread t2=new Thread(mythread,"TT22");
t1.start();
t2.start();
}
}
class MyThread implements Runnable{
Object obj=new Object();//同步对象
@Override
public void run() {
this.domthod();
/*
* 同步代码块
*/
/*synchronized(obj){
System.out.println(Thread.currentThread().getName()+" do something");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" done");
}
*/
}
/*
* 同步方法
*
*/
public synchronized void domthod(){
System.out.println(Thread.currentThread().getName()+" do something");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" done");
}
}
本文深入探讨了线程同步的概念,包括同步代码块和同步方法,以及它们如何影响性能和数据安全性。同时,提供了三条关键准则来帮助开发者有效地进行线程同步,避免潜在的死锁问题。
3173

被折叠的 条评论
为什么被折叠?



