Java线程代码的实现方法

发布时间 - 2026-01-11 02:49:39    点击率:

一、线程Java代码实现

1.继承Thread

声明Thread的子类

public class MyThread extends Thread {
 public void run(){
  System.out.println("MyThread running");
 }
}

运行thread子类的方法

MyThread myThread = new MyThread();
myTread.start();

2.创建Thread的匿名子类

Thread thread = new Thread(){
 public void run(){
  System.out.println("Thread Running");
 }
};
thread.start();

3.实现Runnable接口

声明

public class MyThread implements Runnable {
@override
public void run() {
 System.out.println("MyThread is running");
}
}

运行

Thread thread = new Thread(new MyRunnable());
thread.start();

4.创建实现Runnable接口的匿名类

new Thread(new Runnable(){
 @override
 public void run() {
  System.out.println("Thread is running");
 }
}).start();

5.线程名字

创建时候可以给线程起名字

Thread thread = new Thread(new MyRunnable(),"name");?获得名字
Thread thread = new Thread(new MyRunnable(),"name");
System.out.println(thraed.getName());?获取运行当期代码线程的名字
Thread.currentThread().getName();

二、线程安全性

1.定义

线程会共享进程范围内的资源,同时,每个线程也会有各自的程序计数器,栈,以及局部变量。在多个线程不完全同步的情况下,多个线程执行的顺序是不可预测的,那么不同的执行顺序就可能带来极其糟糕的结果。


如何定义一个类是线程安全的呢?最核心的问题在于正确性,在代码中无需进行额外的同步或者协同操作的情况下,无论有多少个线程使用这个类,无论环境以何种方式调度多线程,这个类总能表现出正确的行为,我们就成这个类是线程安全的。

2.线程类不安全的实例

1.首先定义Count类,有私有成员count=0;

public class Count {
 private long count = 0;
 
 public long getCount() {
  return count;
 }
 
 public void service() {
  count++;
 }
}

2.然后在线程中去调用这个类的service方法

final Count count = new Count();
for (int i = 0; i < 20000; i++) {
 Thread thread3 = new Thread(){
  @Override
  public void run() {
   count.service();
   if (count.getCount() == 20000) {
    System.out.println("ahha");
   }
  }
 };
 thread3.start();
}

3.结果程序却没有输出,说明最后count并没有达到20000,为什么呢?

因为存在着以下错误执行的情况:线程2在线程1没有完成count自增的情况下就读取了count,导致最后count没有达到20000。

4.并发编程中,这种由于不恰当的执行顺序而显示了不正确结果的情况叫做Race Condition(竞争状态),这种情况出现的根本原因是count的自增没有保持原子性。count自增分三步操作,而不是一步到位。

以上这篇Java线程代码的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# 线程代码实现  # Java创建多线程的两种方式对比  # Java多线程的实现方式比较(两种方式比较)  # 详解Java实现多线程的三种方式  # 详解三种java实现多线程的方式  # 子类  # 多个  # 情况下  # 给大家  # 会有  # 希望能  # 却没有  # 表现出  # 这种情况  # 就可  # 什么呢  # 能带  # 这篇  # 中去  # 不完全  # 不正确  # 小编  # 不安全  # 使用这个  # 多线程 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript模板引擎Template.js使用详解  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  网站制作免费,什么网站能看正片电影?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  非常酷的网站设计制作软件,酷培ai教育官方网站?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Python进程池调度策略_任务分发说明【指导】  如何快速生成专业多端适配建站电话?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何快速搭建高效WAP手机网站吸引移动用户?  大型企业网站制作流程,做网站需要注册公司吗?  使用spring连接及操作mongodb3.0实例  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel如何处理CORS跨域请求?(配置示例)  nodejs redis 发布订阅机制封装实现方法及实例代码  网站制作壁纸教程视频,电脑壁纸网站?  JavaScript中的标签模板是什么_它如何扩展字符串功能  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  JS弹性运动实现方法分析  Laravel如何创建自定义Facades?(详细步骤)  如何用低价快速搭建高质量网站?  JavaScript如何实现路由_前端路由原理是什么  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  简单实现Android文件上传  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  详解Android——蓝牙技术 带你实现终端间数据传输  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  深圳网站制作的公司有哪些,dido官方网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在新浪SAE免费搭建个人博客?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  新三国志曹操传主线渭水交兵攻略  Java垃圾回收器的方法和原理总结  原生JS获取元素集合的子元素宽度实例  如何挑选优质建站一级代理提升网站排名?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在万网自助建站中设置域名及备案?