Thread 类的常用方法

Thread 类的常用方法

String getName()  返回线程名称

void setName(String name)   改变线程的名称

int getPriority()  得到线程的优先级

void setPriority(int priority) 设置优先级

boolean isDaemon()  是否为守护线程

void setDaemon(boolean on) 标记改线程为守护线程

static void sleep(long millis)

void interrupt()  中断线程

static void yield() 暂停当前线程,执行其他线程

void join() 等待该线程终止

void run()

void statrt() 

从Object 类继承来的方法  void notify()  void wait()

===============================具体实例===================

1.sleep 阻塞

Thread.sleep(times) 使当前线程从running 状态放弃处理器进入Block状态休眠times毫秒,再返回Runnable状态。

当一个线程处于睡眠阻塞时,若被其他线程调用.interrupt方法中断,则sleep方法会抛出InterruptedException异常

2.后台线程(守护线程 精灵线程)

后台线程的特点:用法与前台线程无异,只是当一个进程中所有前台线程都结束后,无论后台线程是否还处于运行中都将被强制结束,从而使得进程结束程序退出。

在运行程序时,操作系统会启动一个进程来运行jvm,jvm运行后会创建第一个前台线程来运行我们程序的main方法。同时也会创建一个后台线程运行GC。

3.线程的优先级

优先级被划分为1-10,1最低10最高。优先级越高的线程被分配时间片的机会越多,那么被CPU执行的机会就越多。

Java多线程同步的几种方式

当多个线程同时访问一个资源时,非常容易出现安全问题。因此需要采用同步机制来解决这种问题。java主要提供了3种实现同步机制的方法:

1)、synchronized关键字

synchronized有两种用法(synchronized方法和synchronized块)

synchronized方法。在方法的生命前加入synchronized关键字,示例如下:

public synchronized void mutithreadAccess();

synchronized块:synchronized块既可以把任意的代码声明为synchronized,也可以指定上锁的对象。有非常高的灵活性,代码如下:

synchronized(syncObject){代码块}

2)、wait()方法和notify()方法:

当使用synchronized来修饰某个共享资源时,如果线程A1执行synchronized代码,另外一个线程A2也要同时执行同一对象的同一synchronized代码时,线程A2将要等到线程A1执行完后,才能继续执行。这种情况下可以使用wait()方法和notify()方法。

在synchronized代码被执行期间,线程可以调用对象的wait方法,释放对象锁,进入等待状态,并且可以调用notify()方法或notify()方法通知正在等待的其他线程。notify()方法仅唤醒一个线程(等待队列中的第一个线程)并允许它去获得锁,notifyAll()方法唤醒所有等待这个对象的线程并允许它们去获得锁。


3)、Lock

JDK5新增了Lock接口以及它的一个实现类ReentrantLock(重入锁),Lock也可以用来实现多线程同步。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值