96SEO 2026-02-19 21:51 12
线程#xff1a;CPU调度的基本单位#xff0c;线程之间共享所在进程的资源#xff0c;包括共享内存#xff0c;公有数据#xff0c;全局变量…一、概念

进程系统资源分配的基本单位进程之间相互独立不能直接访问其他进程的地址空间。
线程CPU调度的基本单位线程之间共享所在进程的资源包括共享内存公有数据全局变量等。
进程就是一个鞋子工厂鞋子由鞋带、鞋底、鞋帮三部分组成。
线程就是工厂下的流水线一条流水线做鞋带一条流水线做鞋底一条流水线做鞋帮最后再把做好的组件组装起来变成一个鞋子。
我们会把原材料直接提供给工厂工厂统一接收而不是里面具体的某个流水线。
所以工厂进程就是我们系统分配资源的最小单位。
如果想做出鞋子至少要开启一个流水线工作这个流水线可以先做鞋带在做鞋帮在做鞋底最后再组装成鞋子如果没有流水线工作一双鞋子也做不出来。
所以流水线是系统可调度执行的基本单位。
工厂包含多条流水线即进程包含多个线程而多条流水线上的工人又共享工厂里的食堂、厕所、宿舍线程之间共享所在进程的资源。
{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创实例并调用start()方法开启线程。
new
MyThread().start();}//1、定义一个类MyThread继承Thread并重写run方法class
Thread.currentThread().getName());}}
MainActivity.class.getSimpleName();Overrideprotected
{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创建Thread对象,
传入MyRunnable的实例并调用start()方法开启线程。
Thread
MyRunnable());thread.start();Thread
MyRunnable());thread1.start();}//
1、定义一个类MyRunnable实现Runnable接口并重写run方法。
class
Thread.currentThread().getName());}}
this.getClass().getSimpleName();Overrideprotected
{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创建线程池对象调用submit()方法执行MyCallable任务并返回Future对象ExecutorService
Executors.newSingleThreadExecutor();FutureInteger
MyCallable());//4、调用Future对象的get()方法获取call()方法执行完后的值try
{e.printStackTrace();}//5、关闭线程池pool.shutdown();}//1、自定义一个类MyCallable实现Callable接口并重写call()方法public
1、线程的生命周期包括新建New就绪Runnable运行Running阻塞Blocked和死亡Dead5种状态。
新建程序使用new关键字之后该线程就处于新建状态jvm为其分配内存并初始化成员变量。
方法之后该线程就处于就绪状态jvm为其创建方法调用栈和PC计数器。
死亡线程执行体执行结束以及抛出一个未捕获的Exception或Error或者直接调用stop()方法结束该线程。
可以通过线程对象的isAlive()方法来判断线程对象的状态。
线程调用sleep()方法主动放弃所占有的CPU资源线程调用了一个阻塞式IO方法在该方法返回之前该线程被阻塞线程试图获得一个同步监视器但是该同步监视器被其他线程所持有线程等待某个通知notify()notify()通常与wait()配合使用线程调用suspend()挂起该方法容易造成死锁不建议使用。
sleep()方法的线程经过了指定的sleep的时间阻塞式IO方法返回值成功获得了同步监视器线程获得了其他线程发出的通知被唤醒挂起的线程调用了resume()方法恢复。
设置线程的优先级来改变线程争抢到时间片的概率优先级高的争抢到时间片的概率越大优先级的取值范围1~10默认为5数字越大优先级越高这个方法的调用必须在start之前否则没有任何意义使用方法getPriority()获取当前线程优先级。
如果所有的前台线程死亡那么后台线程会自动死亡默认情况下所有的线程都是前台线程这个方法的调用必须在start之前。
让当前线程暂停millis毫秒并进入阻塞状态睡眠状态的线程不会释放同步监视器在此期间该线程不会获得执行的机会使用sleep方法时需要捕捉InterruptedException或者抛出该异常。
表示的并不是将线程结束而是表示清除阻塞状态中断线程操作实质上是修改了一下中断标示位为true如果线程处于阻塞状态抛出异常InterruptedException。
MainActivity.class.getSimpleName();Overrideprotected
{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread
MyRunnable());thread.start();try
{e.printStackTrace();}//打断休眠线程thread.interrupt();}class
----开始休眠-----);Thread.sleep(5000);}
{e.printStackTrace();Log.i(TAG,
MainActivity.class.getSimpleName();Overrideprotected
{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread
MyRunnable());thread.start();thread.interrupt();}class
(Thread.interrupted()){Log.i(TAG,
}执行结果interrupted()只有主线程调用的时候才会是true。
for循环结束后再次执行是false。
在执行原来的线程的过程中如果遇到了合并线程则优先执行合并进来的线程当合并线程执行完毕之后再接着执行原来的线程调用join方法之前一定要将线程startjoin(0)的意思不是A线程等待B线程0秒而是A线程等待B线程无限时间直到B线程执行完毕即join(0)等价于join()。
MainActivity.class.getSimpleName();Overrideprotected
{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread
JoinRunnable());thread1.start();for
{e.printStackTrace();}}Log.i(TAG,
Thread.currentThread().getName()
Thread.currentThread().getName()
使得正在执行的线程暂停但不会阻塞线程释放自己拥有的CPU线程进入就绪状态。
只有优先级与当前线程相同或者优先级比当前线程更高的线程才有可能获得执行机会但是可能是当前线程又进入到“运行状态”继续运行。
{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread
MyRunnable());thread1.start();}class
{//结果2需要将下面注释放开//Thread.yield();count
System.currentTimeMillis();Log.i(TAG,
{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread
MyRunnable());thread1.start();thread2.start();}static
Thread.currentThread().getName()
{Thread.currentThread().yield();}}}}}
官方不建议使用该方法因为stop不安全stop会解除由线程获取的所有锁定当在一个线程对象上调用stop()方法时这个线程对象所运行的线程就会立即停止假如一个线程正在执行synchronized
由于方法是同步的多个线程访问时总能保证x,y被同时赋值而如果一个线程正在执行到x
3;时被调用了stop()方法即使在同步块中它也会马上stop了这样就产生了不完整的脏数据。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback