黑马程序员技术交流社区
标题: 多线程的实现和并发异常 [打印本页]
作者: 13956435978 时间: 2017-12-4 16:21
标题: 多线程的实现和并发异常
技术贴
在就业班二阶段的课程中,我们学了很多技术,在这些技术中,我说一下多线程,因为现在很多技术都需要使用多线程实现,而且多线程的应用也是非常广泛.
首先我们要先了解多线程得定义:
1).多线程分为两点:
1.进程:指某一个程序在内存中的执行单元;
2.线程:指某一个程序的执行单元
2).如何实现多线程java为我们提供了以下两种方法:
1>.定义一个类继承Thread类,重写Thread类的 run()方法;
例如:定义一个类继承Thread类
public class MyThread extends Thread(){
public void run(){};
}
测试类
public static void main(String[] args) {
MyThread t=new MyThread();
MyThread t1=new MyThread();
调用该类的start();方法启动线程;
t.start();
t1.start();
}
2>.1.定义一个类,实现Runnable接口,重写run()方法;
2.创建实现类对象,将该对象作为Thread类对象的构造方法进行传递参数。然后调用Thread对象的start()方法开启线程;
public class MyThread implements Runnable(){
public void run(){
}
}
测试类
public static void main(String[] args) {
MyThread t=new MyThread();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
t1.start();
t2.start();
}
3).多线程在运行时会出现的主要问题就是线程安全问题,即并发性异常,
这时我们可以使用同步方法,来提高线程的安全性
使用方法 synchronized()提高线程的安全性;
在参数的传递上:
非静态同步方法的锁对象是this
静态同步方法锁对象是类的字节码对象
示例代码:
public class MyThread implements Runnable(){
int num=100;
public void run(){
while(true){
可以使用this传递参数,谁调用就代表谁,这里的this代表的是该类的对象
synchronized(this){
if(num > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":" +num--);
}
}
}
}
}
作者: 奥斯托洛夫斯基 时间: 2017-12-8 16:03
作者: O-limin 时间: 2018-4-12 14:16
作者: hguilin 时间: 2018-4-12 14:38
66
作者: 美美就是美 时间: 2018-4-12 14:42
作者: 黑马啸西风 时间: 2018-4-12 14:51
作者: 项老师 时间: 2018-4-12 14:52
作者: 皖哥哥 时间: 2018-4-12 16:37
分享的很好,也让同学们学到了内容
作者: 小皖妹妹 时间: 2018-4-12 16:47
作者: IceLoveInFire丶 时间: 2018-4-12 19:16
不错不错(*๓´╰╯`๓)
作者: 骑着小猪看雪 时间: 2018-4-13 09:34
666
作者: 粼珂 时间: 2018-4-14 00:09
谢谢楼主
作者: O-limin 时间: 2018-5-3 16:05
作者: 黄桂林 时间: 2018-5-3 17:59
6666666666666
作者: 皖哥哥 时间: 2018-5-3 17:59
不错,超赞
作者: 黑马啸西风 时间: 2018-5-3 18:00
作者: 朱浩 时间: 2018-5-3 18:02
66666
作者: 美美就是美 时间: 2018-5-3 18:02
作者: 骑着小猪看雪 时间: 2018-5-4 10:22
不错嘛
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |