当前位置: 首页 > news >正文

上线了做的网站怎么办wordpress 数据库类

上线了做的网站怎么办,wordpress 数据库类,企业网站多大空间够用,中山 网站设计一、概念 进程#xff1a;系统资源分配的基本单位#xff0c;进程之间相互独立#xff0c;不能直接访问其他进程的地址空间。 线程#xff1a;CPU调度的基本单位#xff0c;线程之间共享所在进程的资源#xff0c;包括共享内存#xff0c;公有数据#xff0c;全局变量…一、概念 进程系统资源分配的基本单位进程之间相互独立不能直接访问其他进程的地址空间。 线程CPU调度的基本单位线程之间共享所在进程的资源包括共享内存公有数据全局变量等。 后台线程后台线程又称为守护线程Daemon ThreadJVM的垃圾回收线程就是典型的后台线程。 举例记忆以下纯属本人瞎编方便记忆 进程就是一个鞋子工厂鞋子由鞋带、鞋底、鞋帮三部分组成。线程就是工厂下的流水线一条流水线做鞋带一条流水线做鞋底一条流水线做鞋帮最后再把做好的组件组装起来变成一个鞋子。我们会把原材料直接提供给工厂工厂统一接收而不是里面具体的某个流水线。所以工厂进程就是我们系统分配资源的最小单位。如果想做出鞋子至少要开启一个流水线工作这个流水线可以先做鞋带在做鞋帮在做鞋底最后再组装成鞋子如果没有流水线工作一双鞋子也做不出来。所以流水线是系统可调度执行的基本单位。工厂包含多条流水线即进程包含多个线程而多条流水线上的工人又共享工厂里的食堂、厕所、宿舍线程之间共享所在进程的资源。 二、线程三种实现 1、继承Thread类 public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创实例并调用start()方法开启线程。new MyThread().start();new MyThread().start();}//1、定义一个类MyThread继承Thread并重写run方法class MyThread extends Thread {Overridepublic void run() {//2、将执行的代码写在run方法中。Log.d(TAG, 线程名字: Thread.currentThread().getName());}} }2、实现Runnable接口 public class MainActivity extends AppCompatActivity {public static final String TAG MainActivity.class.getSimpleName();Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创建Thread对象, 传入MyRunnable的实例并调用start()方法开启线程。Thread thread new Thread(new MyRunnable());thread.start();Thread thread1 new Thread(new MyRunnable());thread1.start();}// 1、定义一个类MyRunnable实现Runnable接口并重写run方法。class MyRunnable implements Runnable {public void run() {//2、将执行的代码写在run方法中。Log.d(TAG, 线程名字: Thread.currentThread().getName());}} }3 、通过Callable和Future创建有返回值的多线程 public class MainActivity extends AppCompatActivity {private final String TAG this.getClass().getSimpleName();Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创建线程池对象调用submit()方法执行MyCallable任务并返回Future对象ExecutorService pool Executors.newSingleThreadExecutor();FutureInteger f1 pool.submit(new MyCallable());//4、调用Future对象的get()方法获取call()方法执行完后的值try {Log.d(TAG, sum f1.get());} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}//5、关闭线程池pool.shutdown();}//1、自定义一个类MyCallable实现Callable接口并重写call()方法public class MyCallable implements CallableInteger {Overridepublic Integer call() throws Exception {//2、将要执行的代码写在call()方法中int sum 0;for (int i 0; i 100; i) {sum i;}return sum;}} }三、线程的生命周期 1、线程的生命周期包括新建New就绪Runnable运行Running阻塞Blocked和死亡Dead5种状态。 新建程序使用new关键字之后该线程就处于新建状态jvm为其分配内存并初始化成员变量。 就绪程序调用start() 方法之后该线程就处于就绪状态jvm为其创建方法调用栈和PC计数器。 运行如果就绪状态的线程获得了CPU那么程序就处于运行状态。 阻塞指一个线程在执行过程中暂停以等待某个条件的触发。 死亡线程执行体执行结束以及抛出一个未捕获的Exception或Error或者直接调用stop()方法结束该线程。可以通过线程对象的isAlive()方法来判断线程对象的状态。 2、生命周期转换 1运行到阻塞 线程调用sleep()方法主动放弃所占有的CPU资源线程调用了一个阻塞式IO方法在该方法返回之前该线程被阻塞线程试图获得一个同步监视器但是该同步监视器被其他线程所持有线程等待某个通知notify()notify()通常与wait()配合使用线程调用suspend()挂起该方法容易造成死锁不建议使用。 2阻塞到就绪 sleep()方法的线程经过了指定的sleep的时间阻塞式IO方法返回值成功获得了同步监视器线程获得了其他线程发出的通知被唤醒挂起的线程调用了resume()方法恢复。 3状态转换图 四、线程常用方法 1、setPriority(int newPriority) - 设置线程优先级 设置线程的优先级来改变线程争抢到时间片的概率优先级高的争抢到时间片的概率越大优先级的取值范围1~10默认为5数字越大优先级越高这个方法的调用必须在start之前否则没有任何意义使用方法getPriority()获取当前线程优先级。 2、setDeamonboolean b - 设置后台线程 如果所有的前台线程死亡那么后台线程会自动死亡默认情况下所有的线程都是前台线程这个方法的调用必须在start之前。 3、sleep(long millis) - 设置线程休眠 让当前线程暂停millis毫秒并进入阻塞状态睡眠状态的线程不会释放同步监视器在此期间该线程不会获得执行的机会使用sleep方法时需要捕捉InterruptedException或者抛出该异常。 4、interrupt - 线程中断 表示的并不是将线程结束而是表示清除阻塞状态中断线程操作实质上是修改了一下中断标示位为true如果线程处于阻塞状态抛出异常InterruptedException。 public class MainActivity extends AppCompatActivity {public static final String TAG MainActivity.class.getSimpleName();Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread thread new Thread(new MyRunnable());thread.start();try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}//打断休眠线程thread.interrupt();}class MyRunnable implements Runnable {public void run() {try {Log.i(TAG, ----开始休眠-----);Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();Log.i(TAG, ----线程中断-----);}Log.i(TAG, ----休眠后执行-----);}} } 执行结果报异常提示中断取消线程阻塞执行休眠后操作。 public class MainActivity extends AppCompatActivity {public static final String TAG MainActivity.class.getSimpleName();Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread thread new Thread(new MyRunnable());thread.start();thread.interrupt();}class MyRunnable implements Runnable {public void run() {for (int i 0; i 5; i ){Log.i(TAG,打印 i);if (Thread.interrupted()){Log.i(TAG, ----线程被中断了-----);}}Log.i(TAG, ----执行完了- interrupt state Thread.interrupted());}} }执行结果interrupted()只有主线程调用的时候才会是true。for循环结束后再次执行是false。 5、join() - 线程合并 在执行原来的线程的过程中如果遇到了合并线程则优先执行合并进来的线程当合并线程执行完毕之后再接着执行原来的线程调用join方法之前一定要将线程startjoin(0)的意思不是A线程等待B线程0秒而是A线程等待B线程无限时间直到B线程执行完毕即join(0)等价于join()。 public class MainActivity extends AppCompatActivity {public static final String TAG MainActivity.class.getSimpleName();Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread thread1 new Thread(new JoinRunnable());thread1.start();for (int i 0; i 5; i) {//主线程执行1的时候把执行权让给了子线程if (i 1) {try {thread1.join();} catch (InterruptedException e) {e.printStackTrace();}}Log.i(TAG, Thread.currentThread().getName() 正在运行....);}}class JoinRunnable implements Runnable {Overridepublic void run() {for (int i 0; i 3; i) {try {Thread.sleep(1000);Log.i(TAG, Thread.currentThread().getName() 正在运行....);} catch (InterruptedException e) {e.printStackTrace();}}}} }执行结果 6、yield() - 线程让步 使得正在执行的线程暂停但不会阻塞线程释放自己拥有的CPU线程进入就绪状态。只有优先级与当前线程相同或者优先级比当前线程更高的线程才有可能获得执行机会但是可能是当前线程又进入到“运行状态”继续运行。 public class MainActivity extends AppCompatActivity {public static final String TAG test;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread thread1 new Thread(new MyRunnable());thread1.start();}class MyRunnable implements Runnable {Overridepublic void run() {long begainTime System.currentTimeMillis();int count 0;for (int i 0; i 5000000; i) {//结果2需要将下面注释放开//Thread.yield();count count (i 1);}long endTime System.currentTimeMillis();Log.i(TAG, 用时 (endTime - begainTime) ms);}} }运行结果1 运行结果2执行时放开Thread.yield() yield()也不会释放锁标志示例如下 public class MainActivity extends AppCompatActivity {public static final String TAG test;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Thread thread1 new Thread(new MyRunnable());Thread thread2 new Thread(new MyRunnable());thread1.start();thread2.start();}static class MyRunnable implements Runnable {private static Object obj new Object();Overridepublic void run() {synchronized (obj) {for(int i 0;i 5;i) {Log.i(TAG, Thread.currentThread().getName() 正在执行i: i);if(i 2) {Thread.currentThread().yield();}}}}} }运行结果Thread-2获取锁以后就算yield也没释放锁 7、stop() - 线程停止 官方不建议使用该方法因为stop不安全stop会解除由线程获取的所有锁定当在一个线程对象上调用stop()方法时这个线程对象所运行的线程就会立即停止假如一个线程正在执行synchronized void { x 3; y 4;} 由于方法是同步的多个线程访问时总能保证x,y被同时赋值而如果一个线程正在执行到x 3;时被调用了stop()方法即使在同步块中它也会马上stop了这样就产生了不完整的脏数据。 参考文章 对进程、线程、多线程、线程池的理解 带你通俗易懂的理解——线程、多线程与线程池 线程类的常见方法介绍 java多线程以及Android多线程
http://www.hkea.cn/news/14288642/

相关文章:

  • 免费网站整站模板源码中国品牌500强排名
  • 那个网站报道过鸟巢建设沈阳又一烂尾项目复工
  • 南昌seo网站推广中国新闻社江西分社
  • 网站开发及技术路线php网站开发经典教材
  • 如何在网站做淘宝页面saas系统是什么意思啊
  • 湿地保护宣教网站建设意义wordpress简洁cms主题
  • 惠阳营销网站制作wordpress 同步 微博
  • 天河做网站湛江企业模板建站
  • 网站要什么软件做外贸网站镜像
  • 齐齐哈尔市建设工程监察网站资源网源码
  • 国内网站建设建设外企公司网站开发设计
  • 网站排名查询系统网站淘宝客一般怎么做
  • 西安建设公司网站wordpress加载模板
  • wordpress新站都该设置些什么做空比特币的网站
  • 电影网站建设教学视频邵东做网站
  • 免费外链网站最佳品牌营销策划公司
  • 快速搭建网站的软件广东两学一做网站
  • 广东省住房和城乡建设厅官方网站发布企业信息的网站
  • 网站服务器怎么更换阿里巴巴国际站怎么网站建设
  • 怎么做北京赛车网站kali wordpress
  • 网站信息备案变更 哪里做搭建linux服务器
  • 有哪些是用到了网站推广wordpress 微商
  • 佛山公司网站推广外包服务优化方案2022版
  • 网站自动采集rss佛山市网站建设企业
  • 广州北京网站建设公司网站权重如何做
  • 如何在网站上做推广专业的佛山网站设计
  • 免费ppt模板 网站开发专业网站建设的价格
  • 做磁力网站网站开发发展存在的问题
  • 自己做的网站绑定域名怎么添加wordpress模板文件
  • wikidot网站怎么做东莞整站优化公司火速公司