请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 95|回复: 0

多线程相关笔记

[复制链接]

4

主题

4

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2023-9-14 19:55:00 | 显示全部楼层 |阅读模式
线程有五个状态:1.新生状态:new出来到start之前
2.就绪状态:调用了start之后进入就绪状态
(注意:线程只能使用start启动而不能用run方法,对于使用接口方法创建线程来说 不能直接start 所以使用寄生的方法)
3.运行状态:在就绪状态下获得了CPU分配的资源
4.阻塞状态:在运行的时候调用的sleep方法 这时进入阻塞状态 在结束睡眠后 进入就绪状态
5.死亡状态:在线程运行完run方法后 进入死亡状态

线程相关的方法:
setPriority(int  newPriority)              更改线程的优先级
(注:优先级1-10,从理论上说优先级高更有机会获得资源 但是从理论上 不一定可以 和线程的礼让:yield 相似)
static void sleep(long millis)              在指定的毫秒数内让当前正在执行的线程休眠
void join()                                      阻击:等待该线程终止其他线程才运行
static void yield()                      暂停当前正在执行的线程对象,并执行其他线程
void interrupt()                              中断线程
boolean isAlive()                              测试线程是否处于活动状态

Tread.sleep(time)                     让线程睡眠 time是时间 单位是毫秒


线程安全:
加锁 synchronized
可以加到方法上面 也可以加到代码块中  加到代码块中效率更高
synchronized (obj) {
             if(count>0){
                number++;
                count--;
                System.out.println(String.format("%s 买到 %d 号票,剩余 %d 张票",Thread.currentThread().getName(), number, count));
            }
}


线程安全相关类:
StringBuffer  Hashtable  线程安全
StringBuilder  Arraylist  HashMap线程不安全
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2023-10-4 13:58 , Processed in 0.040280 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表