java多线程的学习
Java多线程的学习
Java线程
一般我们写的程序是单线程的,其main函数就是启动单线程的入口。在java中可以实现Runable接口或是继承Thread来实现多线程,要实现多线程,就必须执行线程的star方法,执行start方法后,java会在后台启动一个新的线程并执行run方法,当然你也可以直接执行run方法,但是就不会去启动新的线程了。下面是一个多线程的例子
public class ThreadMutile {
/**
* @param args
*/
public static void main(String[] args) {
ThreadZou t=new ThreadZou();
t.start();//新启动一个线程
for(int i=0;i100;i++)
System.out.println(main);
}
}
class ThreadZou extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
for (int i=0;i100;i++)
System.out.println(zouxiaohu);
}
}
这里会有两个线程一个是main函数,一个是新建立的线程。你会发现其每次执行结果会有所不同,这是因为线程并发运行的结果
实现线程有两种方法,上面说的是去继承Thread类,另一个方法是去实现Runable接口,然后将其示例传递给Thread构造器进行实例化一个线程,最后调用start方法来进行新建一个线程。注意:无论是哪种进行实现线程,新建线程的方法永远是进行调用start方法。
线程的操作
Sleep方法进行暂停,该方法是Thread类的类方法,用法如下:
public static void main(String[] args) {
for(int i=0;i100;i++)
{
System.out.println(tt);
try {
Thread.sleep(2000);//单位ms
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
}
这里是每隔2秒会进行打印,与暂停对应的方法是半路唤醒,即是interrupt方法。后面会进行介绍;
当多个线程访问一个共享资源时此时需要进行方法的同步即是互斥。比如银行的取款的逻辑如下:
If 存款金额取款金额
进行取款
可能会发生的情况是,两个线程a,b进行同时的访问,刚好b线程夹在a线程的确定余额和可用取款之间,那么就会发生两个线程都进行了取钱,最后则是余额是负数了。因此需要进行方法的同步
下面是同步块的方法:
public class Bank {
private String name;
private int money;
public Bank(String name,int money){
this.money=money;
this.name=name;
}
//进行存款
public synchronized void deposit(int m)
{
money+=m;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//进行取款
public synchronized boolean withdrow(int n)
{
if(money=n){
money=-n;
return true;
}else{
return false;
}
}
public static void main(String[] args) {
}
}
注意:对于同一实例只能有一个线程去访问同步的方法(如果有两个实例那么一个实例如果有线程在执行同步方法,不会影响到另一实例的锁定即是:只要有实例,就会有一个锁定)也就是说如果有线程在进行去钱调用withdrow方法,那么该线程就会去加锁,其余的线程是无法进行调用其他的同步方法(存钱,取钱)此时只能进行等待获取锁。
如果想进行锁定方法的局部,那么可以利用同步代码块
synchronized (表达式)后面进行讲解。也可以定义类方法的同步:
您可能关注的文档
最近下载
- SIMATIC S7-1200概述(工程师培训).pptx VIP
- 马工程教学课件《管理学》(第二版)第七章人员配备.pptx VIP
- 2025年《信息技术》教师资格证真题及答案.docx VIP
- 融资租赁与保险工具在大型设备项目中的风险对冲研究.pdf VIP
- 2025年互联网营销师考试通关ROI综合能力测试专题试卷及解析.pdf VIP
- S7-1200系统介绍课件.ppt VIP
- 智慧教育生态中的数字韧性培养策略研究.pdf VIP
- 2022年9月17日全国事业单位联考A类《职业能力倾向测验》答案+解析.pdf VIP
- 2025年拍卖师拍卖行业竞争格局与企业差异化效益战略专题试卷及解析.pdf VIP
- 2025年质量工程师产品召回危机公关专题试卷及解析-单项选择题.pdf VIP
原创力文档

文档评论(0)