1.设立线程优先级:线程10个优先级由1-10 可以采用 Priority()方法来进行设置
min.setPriority(Thread.min_PRIORITY); 为线程时间片最小。max.setPpriority((Thread.maxPRIORITY);为线程时间片最大。 Thread.yield()代表线程放弃了时间片
2.获取当前运行该方法的线程:currentThread 例如:Thread t = Thread.currentThread();
3.线程的等待(睡眠):sleep : Thread.sleep(时间为毫秒计算);
4.守护线程:DaemonThread :设置守护线程是必须得在被守护的运行之前设置, 例如 rose.start() t.setDaemon(true). t.start() 此时rose线程结束,t也结束。
5.同步块(同步锁):synchronized 设置同步可以避免多个线程之间的相互碰撞 可以强迫一个一个的运行
public class SyncDemo4 {
public static void main(String[] args) {
Boo boo = new Boo();
Thread t1 = new Thread(){
public void run(){
boo.methodA();
}
};
Thread t2 = new Thread(){
public void run(){
boo.methodB();
}
};
t1.start();t2.start(); }}
class Boo{
public synchronized void methodA(){//this
Thread t = Thread.currentThread();
System.out.println(t.getName()+":正在执行A方法...");
try { Thread.sleep(5000); } catch (InterruptedException e) { }
System.out.println(t.getName()+":执行A方法完毕!"); }
public void methodB(){
synchronized (this) {
Thread t = Thread.currentThread();
System.out.println(t.getName() + ":正在执行B方法...");
try { Thread.sleep(5000);
} catch (InterruptedException e) {
}System.out.println(t.getName() + ":执行B方法完毕!");
} }}
6.线程池ExecutorService:可以控制线程的数量,重复的使用线程。例子中有三个去完成run()方法这样会有三个线程争夺时间片去完成run()方法
public class ThreadPoolDemo {
public static void main(String[] args) {
//1创建一个容量为3的线程池 相当于设立了三个线程来完成run()方法
ExecutorService threadPool = Executors.newFixedThreadPool(3);
//2指派任务
for(int i=0;i<5;i++){
Runnable r = new Runnable() {
public void run() {
Thread t = Thread.currentThread();
System.out.println(t.getName()+":正在执行任务...");
try { Thread.sleep(5000);
} catch (InterruptedException e) {}
System.out.println(t.getName()+":任务执行完毕!!!");
}};
threadPool.execute(r);
System.out.println("指派了一个任务给线程池");
} }}
本文详细介绍了Java中线程的优先级设置、获取当前运行线程、线程的等待与唤醒、守护线程的使用,以及同步块和线程池的概念与应用。示例代码展示了如何使用synchronized关键字实现线程同步,并通过ExecutorService创建线程池来管理线程,确保任务的有序执行。
170万+

被折叠的 条评论
为什么被折叠?



