• JAVA 线程学习


      1 public class ThreadKnow
      2 {
      3     private TimeThread timeThread;
      4     private boolean flag;
      5     
      6     public ThreadKnow()
      7     {
      8         /*************************创建线程************************/
      9          //自定义线程构建方式一  继承Thread类
     10 //        public class MyThreadExam1 extends Thread
     11 //        {
     12         
     13         //自定义线程构建方式二:实现Runnable接口
     14 //        public class MyThreadExam2 implements Runnable
     15 //        {
     16         
     17         //对于需要在线程中执行的操作,可以重写父类的run()方法,并在方法中添加操作代码
     18         
     19         /*************************线程中控制状态的使用************************/
     20         /***一***/
     21         //Thread.sleep()只能对当前运行的线程进行阻塞
     22         //sleep在进入阻塞状态后只有到达时间毫秒后自动苏醒,任意方式打断处于sleep状态的线程都将引起异常
     23         //sleep在进入阻塞状态后该线程所使用的到其他对象都将处于锁定的状态(sleep阻塞不会释放对象锁)
     24         /***二***/
     25         //当发生多个线程公用一个对象时,为防止该对象被随意使用,可以使用同步快对对象进行控制,为对象加上对象锁
     26         //对象所只能对对象有作用:即对基本数据类型时没作用的
     27 //        synchronized (list)
     28 //        {
     29 //            //操作代码
     30 //        }
     31         /***三***/
     32         //加入线程队列中,等待线程执行完毕
     33 //        timeThread.join();
     34         /***四***/
     35         //强制终止该线程
     36         timeThread.stop();
     37         /***五***/
     38         //挂起线程,但是会保留对象锁
     39         timeThread.suspend();
     40         /***六***/
     41         //继续挂起的线程,和suspend搭配使用
     42         timeThread.resume();
     43         /***七***/
     44         //将该线程加入到执行队列中,等待该线程的执行完毕
     45 //        timeThread.join();
     46         /***八***/
     47         //暂停当前正在执行的线程,并执行其他线程
     48         timeThread.yield();
     49         
     50         /***九***/
     51         //线程等待:该方法是Object对象的方法,但是也可以控制线程,而且会释放对象锁
     52 //        new Object().wait();
     53         /***十***/
     54         //线程唤醒:同样是Object对象的方法,需要搭配使用wait()使用
     55         new Object().notify();
     56         
     57         //创建线程
     58         timeThread = new TimeThread();
     59         //开启线程
     60         timeThread.start();
     61         //判断线程的状态
     62         if(timeThread.getState() == State.NEW)
     63         {
     64         }
     65         else
     66         {
     67         }
     68         //打断线程,并不能阻止线程的停止,修改线程的状态
     69         timeThread.interrupt();
     70         //暂停线程,将线程挂起
     71         timeThread.suspend();
     72         //继续线程,将使用suspend挂起的线程继续执行
     73         timeThread.resume();
     74     }
     75     
     76     public static void main(String[] args)
     77     {
     78         
     79     }
     80     /**
     81      * 显示时间的线程
     82      * @author Administrator
     83      *
     84      */
     85     private class TimeThread extends Thread
     86     {
     87 
     88         @Override
     89         public void run()
     90         {
     91             while(true)
     92             {
     93                 if(flag)
     94                 {
     95                     String time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
     96 //                    lblTime.setText(time);
     97                     try
     98                     {
     99                         Thread.sleep(1000);
    100                     } catch (InterruptedException e)
    101                     {
    102                         // TODO Auto-generated catch block
    103                         e.printStackTrace();
    104                     }
    105                 }
    106                 
    107             }
    108         }
    109         
    110     }
    111 }
  • 相关阅读:
    CAS在tomcat6.0.18下的SSO
    CAS在tomcat6.0.18下的SSO
    PL/SQL 0.几秒出结果,SQL效率一定高吗?
    优化大型复杂SQL
    C++ ProtoBuf小结
    protobuf c++入门
    Oracle_inner join,left join,right join,full join 的区别,用例子说明
    Linux_查看修改SWAP大小
    Oracle 优化器
    Oracle 行转列两种方法
  • 原文地址:https://www.cnblogs.com/Wfei/p/3332757.html
Copyright © 2020-2023  润新知