IDEA中怎么设置项目更改后的分析延迟时间,IDEA是java编程语言的集成开发环境,使用该软件编写代码时,可以设置项目更改后的分析延迟时间,这样就可确保项目范围分析的正确性,具体的操作步骤如下。......
2023-07-04 573 JAVA
想了解线程同步的方法就得先知道什么是线程,然后线程怎么创建的,再然后就是去实现线程的同步。
什么是线程?
线程是电脑程序运行时的最小单元,一个电脑程序运行会有一个或多个线程存在。
下面我会以java代码来讲解线程间的同步方法。
首先我们得带着问题去学习,线程为何会有同步一说?
在java中是允许多线程并发控制,当有多个线程同时操作同一个资源时,很有可能导致数据不准确,相互之间产生冲突。
打个比方:我们买火车票时某个车次的火车票只剩一张,而正好A和B同时进行购买该车票,在不同步的情况下A和B可能会都收到购买成功的结果,他们购买到的是同一张票,这显然不合理。而在同步的情况下是不可能出现该种情况的。
所以加入同步锁是为了避免在该线程没完成操作之前不被其他线程调用,从而达到资源的唯一性和准确性。
我这用的是NetBeans估计非主流了,现在大多用的是myeclipse/eclipse。
如图:
新建一个项目,我这就叫Thread_demo了。名字看自己心情命名就好。
同步方法:
synchronized关键字修饰的方法即为方法的同步
代码:
publicsynchronized void 方法名() {
需要同步的内容...
}
如图:
同步代码块:
synchronized关键字修饰的语句块即为方法块的同步
代码:
synchronized(object){
需要同步的内容...
}
如图:
线程的同步对电脑的开销是很大的,我们应该尽量避免同步的使用,或者说能缩小同步的范围就尽量减少,能同步代码块的就不要去同步整个方法。
下面附上线程同步的运用:
package thread_demo;
/**
*
* @author Admin
*/
public class Thread_Demo {
class Bank {
private int account = 100;
public int getAccount() {
return account;
}
/**
* 同步方法实现
* @param money
*/
public synchronized void add(int money) {
account = money;
}
/**
* 同步代码块实现
* @param money
*/
public void add1(int money) {
synchronized (this) {
account = money;
}
}
}
class CreateThread implements Runnable {
private Bank bank;
public CreateThread(Bank bank) {
this.bank = bank;
}
@Override
public void run() {
for (int i = 0; i 10; i ) {
bank.add(10);
System.out.println(i "账户余额:" bank.getAccount());
}
}
}
/**
* 建立线程,调用内部类
*/
public void exeThread() {
Bank bank = new Bank();
CreateThread new_thread = new CreateThread(bank);
System.out.println("线程1");
Thread thread1 = new Thread(new_thread);
thread1.start();
System.out.println("线程2");
Thread thread2 = new Thread(new_thread);
thread2.start();
}
public static void main(String[] args) {
Thread_Demo td = new Thread_Demo();
td.exeThread();
}
}
如图:
1:为加synchronized关键词的结果,即同步得到的结果
2:为不加synchronized关键词的结果,即不同步得到的结果
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
IDEA中怎么设置项目更改后的分析延迟时间,IDEA是java编程语言的集成开发环境,使用该软件编写代码时,可以设置项目更改后的分析延迟时间,这样就可确保项目范围分析的正确性,具体的操作步骤如下。......
2023-07-04 573 JAVA
IDEA中怎么设置调试器最近表达式的最大数量,IDEA是java编程语言的集成开发环境,使用该软件编写代码时,可以设置调试器最近表达式的最大数量,从而有效避免调试器中表达式存储过多。......
2023-07-04 397 JAVA