Java多线程及线程安全实现方法解析

网友投稿 179 2022-12-05


Java多线程及线程安全实现方法解析

一、java多线程实现的两种方式

1、继承Thread

/**

*

* @version: 1.1.0

* @Description: 多线程

* @author: wsq

* @date: 2020年6月8日下午2:25:33

*/

public class MyThread extends Thread{

@Override

public void run() {

System.out.println("This is the first thread!");

}

public static void main(String[] args) {

MyThread mt = new MyThread();

mt.start();

}

}

2、实现 Runnable 接口

public class MultithreadingTest {

public static void main(String[] args) {

new Thread(() -> System.out.println("This is the first thread!")).start();

}

}

或者

public class MyThreadImpl implements Runnable{

private int count = 5;

@Override

public void run() {

// TODO Auto-generated method stub

count--;

System.out.println("Thread"+Thread.currentThread().getName()+"count:"+count);

}

}

二、解决线程不安全问题

/**

*

* @version: 1.1.0

* @Description: 测试类

* @author: wsq

* @date: 2020年6月8日下午9:27:02

*/

public class Test {

public static void main(String[] args) {

MyThreadImpl myThreadImpl = new MyThreadImpl();

Thread A = new Thread(myThreadImpl,"A");

Thread B = new Thread(myThreadImpl,"B");

Thread C = new Thread(myThreadImpl,"C");

Thread D = new Thread(myThreadImpl,"D");

Thread E = new Thread(myThreadImpl,"E");

A.start();

B.start();

C.start();

D.start();

E.start();

}

}

打印结果为:

ThreadBcount:3

ThreadCcount:2

ThreadAcount:3

ThreadDcount:1

ThreadEcount:0

B和A共用一个线程,存在线程安全问题

改成:

public class MyThreadImpl implements Runnable{

private int count = 5;

@Override

  // 使用同步解决线程安全问题

synchronized public void run() {

// TODO Auto-generated method stub

count--;

System.out.println("Thread"+Thread.currentThread().getName()+"count:"+count);

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot项目中分页插件PageHelper无效的问题及解决方法
下一篇:SpringSceurity实现短信验证码功能的示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~