一.原则
静态:静态,相对于动态。动态是指当java程序在jvm中运行时,jvm根据程序的需要动态地创建对象和分配内存。静态意味着当java程序不运行时,jvm将为加载的类分配空间来存储静态修饰内容。静态修改的内容存储在方法区,全局共享,内存只分配一次。
第二,角色
1.修饰代码块
因为在jvm运行时,静态代码块将只执行一次。执行结果保存在方法区,由线程共享。
2.修改成员变量
注意,static不能修改局部变量。
当修饰成员变量时,直接使用类名。调用成员变量的方法。
不需要显式初始化,默认情况下jvm会给它相应的值。
可能会出现线程安全问题。
3.修改方法
调用方法同上。
4.修改内部类
三、使用方法
当一个类的某些类内容不属于对象而由对象共享时使用。
不安全/不安全
具体原因如下:从实现原理可以看出,strtok函数对原字符串本身进行操作,破坏了待分解字符串的完整性,调用前后strtok
1.回答你的问题,继承thread类调用start方法实现多线程。
其实java实现多线程有三种继承thread类,实现runnable接口和callabl:线程对象已经创建,但尚未调用start方法。
当调用runnabl:包括等待/阻塞睡眠。一个线程将不会因为某个条件而执行,但是在等待事件出现时可能会返回到runnabl:异常或运行方法执行完成时达到的状态。
4.线程同步
既然是多线程,就要注意线程安全。
要解决线程安全问题,就要加锁。java提供了synchronized和lock来实现线程同步的问题(这里不提lock的实现,后面可以分享)。
5.线程通信
客体与客体。;等待/通知的方法、条件和步骤。;等待和信号方法,阻塞队列的实现类,
并发包下的semaphore和cyclicbarriercountdownlatch能否实现线程通信,这里就不清楚了。
6.线程池
线程池可以参考我分享的关于threadpoolexecutor的文章。
7.其他人
threadlocalvolatile这两个东西也是线程经常需要用到的,可以了解一下。
基本上,那的所有线程使用,希望对你有所帮助。
你可以关注我,然后你会通过源代码分析其中涉及的知识点。