文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中怎么创建自己的线程对象

2023-06-02 09:22

关注

本篇内容主要讲解“Java中怎么创建自己的线程对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中怎么创建自己的线程对象”吧!

默认情况下,主线程和垃圾回收线程都是由系统创建的,但是我们需要完成自己的功能----创建自己的线程对象。

 * java将线程面向对象了,形成的类就是Thread,在Thread类内部执行任务的方法叫run()

 *

 * 注意:如果想让run作为任务区,必须让他去被自动调用.我们通过执行start()方法,来开启线程,继而实现run方法的自动调用.

## 直接使用Thread创建线程对象

//  //分析:由于我们实现的实际功能Thread类是决定不了的,所以没有办法将我们的功能放入Thread的run方法里

//  //所以Thread的run 方法是一个空方法.如果我们想实现自己的功能,可以写Thread类的子类,重写run方法

当我们手动调用run的时候,他失去了任务区的功能,变成了一个普通的方法.

//当run作为一个普通方法时,内部对应的线程跟调用他的位置保持一致.

##  锁的条件:

   * 1.锁必须是对象      普通的对象/this/字节码文件

 * 2.要被所有的线程共享

 *

 * 注意:字节码文件的使用范围太大,一般不建议使用.

空唤醒

##  Lock锁

使用步骤

创建ReentrantLock lock = new ReentrantLock();对象,需要注意的是多个线程必须使用同一个

把之前的synchronized(锁){ 用lock.lock()替换

把}  用lock.unlock();替换

好处

不要考虑锁对象

代码看起来更加简洁了

可以使用try..catch..finaly把lock.unlock放到finaly中,好处是如果该线程发生了异常,照样可以释放锁

## 比较synchronized和Lock

 * 1.synchronized:从jdk1.0就开始使用的同步方法-称为隐式同步

  *  synchronized(锁对象)

  *  {//获取锁      我们将锁还可以称为锁旗舰或者监听器

       同步的代码}//释放锁

 * 2.Lock:从jdk1.5开始使用的同步方法-称为显示同步

 * 原理:Lock本身是接口,要通过他的子类创建对象干活儿

 * 使用过程:

 * 首先调用lock()方法获取锁

 * 进行同步的代码块儿

 * 使用unlock()方法释放锁

 * 使用的场景:

 * 当进行多生产者多消费者的功能时,使用Lock,其他的都使用synchronized

 * 使用效率上:Lock高于synchronized

## 多线程的单例

//饿汉式,由于公共方法中只有一行公共的代码,所以不会产生线程安全问题

class SingleInstance1{

private static final SingleInstance1 s = new SingleInstance1();

private SingleInstance1() {

}

public static SingleInstance1 getInstance() {

return s;

}

}

//懒汉式,

class SingleInstance2{

private static  SingleInstance2 s = null;

private SingleInstance2() {

}

public  static SingleInstance2 getInstance() {

if (s == null) {//尽量减少线程安全代码的判断次数,提高效率

synchronized (SingleInstance2.class) {//使用同步代码块儿实现了线程安全

if (s == null) {

s = new  SingleInstance2();

}

}

}

return s;

}

## 线程停止

通过一个标识结束线程

调用stop方法---因为有固有的安全问题,所以系统不建议使用.

调用interrupt方法----如果目标线程等待很长时间(例如基于一个条件变量),则应使用 interrupt 方法来中断该等待。

到此,相信大家对“Java中怎么创建自己的线程对象”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯