Java多线程中如何创建线程


这篇文章主要介绍Java多线程中如何创建线程,免费云主机域名文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!自定义线程类继承Thread类重写run()方法,编写线程执行体(当成main()方法用)创建线程对象,调用start()方法启动线程创建两个线程,其中一个线程打印100以内的偶数,另一个线程打印100以内的奇数也可以使用匿名内部类的方法来实现(线程用过以后就不再用了)三个窗口同时卖票,票数总共为100张(注意票数应该是静态变量,否则就是没创建一个对象,该对象就有100张票)注意:这里存在一个线程安全问题未解决,后面将会讲到。如下图所示,刚开始三个线程启动的时候,读取的票数都是100张。start()方法的作用:通过调用自己写的线程类对象的start()方法,来启动该线程,并调用该线程的run()方法不能通过直接调用run()方法的方式启动线程不可以让已经start()的线程再次star()来同时跑两个线程。可以通过新建一个该线程类的对象,然后在对新建的对象start()start()启动当前线程;调用当前线程的run()方法run():通常需要重写Thread类中的此方法,将创建线程需要执行的操作声明在此方法中(当做main()使用)currentThread():静态方法,返回执行当前代码的线程getName():获取当前线程的名字setName(String name):设置当前线程的名字yield():释放当前CPU的执行权(但也有可能下一刻的执行权又回到了当前线程,主控权还是在CPU手上)join():在线程a中调用线程bjoin(),此时线程a就进入阻塞状态,直到线程b完全执行完之后,线程a在结束阻塞状态stop():当执行此方法时,强制结束当前线程(已停用)sleep(int millitime):让当前线程“睡眠”指定的millitime毫秒。在指定的millitime毫秒时间内,当前进程是阻塞状态isAlive():判断当前线程是否存活(线程执行完之前都是存活的)同样是上面的三个窗口买票的问题,同样是100张票,但使用这种创建方法,tickets可以不使用静态变量
创建一个实现了Runnable接口的类实现类去实现Runnable接口中的抽象方法:run()创建实现类的对象将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象通过Thread类的对象调用start()这里的start()首先启动了当前的线程,然后调用了Runnable类型的target的run()
开发中,优先选择实现Runnable接口的方式创建线程原因:实现Runnable接口的方式没有类的单继承性的局限性(一个类只能继承一个父类,继承了Thread类就不能在继承其他类了)实现Runnable接口的方式更适合来处理多个线程之间有共享数据的情况联系:Thread类本身也实现了Runnable接口相同点:两种方式都需要重写run()方法,将线程要执行的逻辑声明在run()方法中调度策略对于同优先级的线程,组成先入先出队列(先到先服务),使用时间片策略对于高优先级,使用优先调度的抢占式模式线程的优先级分为1~10十个档,其中:NORM_PRIORITY:5 —— 普通优先级,即默认的优先级MAX_PRIORITY:10 —— 最高优先级MIN_PRIORITY:1 —— 最低优先级getPriority():获取线程的优先级setPriority(int p):设置线程的优先级注意:高优先级的线程要抢占低优先级线程CPU的执行权。但是只是从概率上来讲,高优先级的线程高概率的情况下被执行。并不意味着只有当高优先级的线程被执行完以后,低优先级的线程才会被执行。以上是“Java多线程中如何创建线程”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注百云主机行业资讯频道!

相关推荐: pytorch中如何实现ResNet结构

小编给大家分享一下pytorch中如何实现ResNet结构,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!现在重新稍微系统的介绍一下ResNet网络结构。 ResNet结构首先通过一个…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/29 16:31
下一篇 08/29 16:31

相关推荐