线程优先级

线程优先级

线程优先级是通过一个int变量priority来控制的,优先级范围为1到10,可以通过setPriority(int)来设置,优先级默认为5。

以下是一个示例代码:

package thread;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class ThreadPriority {

    private static volatile boolean notStart = true;
    private static volatile boolean notEnd   = true;

    public static void main(String[] args) throws Exception {
        List<Job> jobs = new ArrayList<>();
        // 先给不同线程分别给一个不同的优先级并执行线程
        for (int i = 0; i < 10; i++) {
            int priority = i < 5 ? Thread.MIN_PRIORITY : Thread.MAX_PRIORITY;
            Job job = new Job(priority);
            jobs.add(job);

            Thread thread = new Thread(job, "Thread:" + i);
            thread.setPriority(priority);// 设置优先级
            thread.start();
        }
        notStart = false;
        TimeUnit.SECONDS.sleep(10);

        notEnd = false;
        for (Job job : jobs) {
            System.out.println("Job priority:" + job.priority + " ,jobCount:" + job.jobCount);
        }
    }

    static class Job implements Runnable {

        // 线程优先级
        private int  priority;
        private long jobCount;

        // 设置优先级
        public Job(int priority) {
            this.priority = priority;
        }

        @Override
        public void run() {
            while (notStart) {// 如果线程是开着的,
                /**
                 * Causes the currently executing thread object to temporarily pause and allow other threads to execute.
                 */
                Thread.yield();// 那么先停下来,让其他线程执行
            }
            while (notEnd) {
                Thread.yield();
                jobCount++;
            }
        }
    }

}

打印出:

Job priority:1 ,jobCount:2847305
Job priority:1 ,jobCount:1
Job priority:1 ,jobCount:16654503
Job priority:1 ,jobCount:9022916
Job priority:1 ,jobCount:2847155
Job priority:10 ,jobCount:9517759
Job priority:10 ,jobCount:11989979
Job priority:10 ,jobCount:9069022
Job priority:10 ,jobCount:24185755
Job priority:10 ,jobCount:9519740

由此可以看出,线程的优先级没有生效,很多优先级1和优先级10的job的技术结果并非常相近,没有明显差异,这表示程序正确性不能依赖线程的优先级的高低。

Read more

超棒的雅思资源!

超棒的雅思资源!

雅思真题材料地址: https://github.com/zeeklog/IETLS 感谢所有人。材料来自:@shah0150 & @kbtxwer * 超棒的雅思资源 * 雅思简介 * 听力 * 阅读 * 写作 * 口语 * 词汇 * 其他 * YouTube 频道 * [播客] (#podcasts) 雅思简介 * 什么是雅思 - 了解什么是雅思 听力 * 高级听力 * 雅思官方网站 * 考试英语 * 英国广播公司节目 * 乔治梅森大学口音学习网站 - 学习不同的口音 * 英国广播公司播客 * 英国文化协会听力练习 阅读 * 雅思提升阅读 写作 * 雅思提升写作 * 雅思从 6 分到 9 分 * 迷你雅思 口语 * Verbling 提供在线英语家教服务

By Ne0inhk
🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk