⑴ 如何创建线程如何保证线程安全
创建线程的方式一:继承Thread类(由于java单继承的特性,这种方式用的比较少)
步骤:
1、继承Thread类,然后重写run方法
2、创建实现类对象、代理类对象,然后代理类对象调用start()方法启动线程
用实现Runnable接口的方式,实现多线程:
《模拟抢票系统》,代码如下:
线程调用了start()方法,并不意味着立即执行,而是到就绪状态,等待cpu的调度,所以每次执行的结果都是不一样的。
创建线程的方式三:实现java.util.concurrent并发包下的Callable接口(进阶版,初学者做个了解)
步骤:
1、创建一个类实现Callable接口,然后重写call()方法
(和run方法不一样的是,call方法可以有返回值,并且可以抛出异常)
2、创建Callable的实现类对象--》创建执行服务--》提交执行服务得到Future对象--》获取结果--》停止服务
⑵ Java涓23绉嶈捐℃ā寮忊斺斿崟渚嬫ā寮
Java涓栫晫涓镄勫崟渚嫔湥娈匡细23绉嶈捐℃ā寮忔帰绱
鍦↗ava缂栫▼涓锛屽崟渚嬫ā寮忓傚悓涓搴фˉ姊侊纴杩炴帴镌瀵硅薄镄勭敓锻藉懆链熺$悊鍜屽叏灞璁块梾镄勭簿濡椤钩琛°傝╂垜浠涓璧锋繁鍏ユ帰璁ㄥ叚绉嶅父瑙佷笖钖勬湁鐗硅壊镄勫疄鐜版柟寮忥纴瀹冧滑鍒嗗埆鏄锛氭噿姹夊纺銆侀タ姹夊纺銆佸弻閲嶆镆ラ挛瀹氥侀润镐佸唴閮ㄧ被銆佹灇涓炬硶涓嶵hreadLocal锛屼互鍙娄竴绉嶅垱鏂扮殑娉ㄥ唽寮忓崟渚嬫ā寮忋
娉ㄥ唽寮忓崟渚嬬殑闱╂柊锛氶噰鐢ㄩ润镐丮ap绠$悊鍗曚緥瀵硅薄锛屽綋闇瑕佹椂锛屽疄渚嫔寲骞惰繑锲炪傚湪璇稿傜嚎绋嬫睁銆佹暟鎹搴撹繛鎺ユ睁銆佹棩蹇楀硅薄鍜岄厤缃鏂囦欢绛夊満鏅涓锛屽畠鑳戒缭璇侀珮鏁堜笖绾跨▼瀹夊叏镄勮块梾銆
铹惰岋纴鍗曚緥妯″纺骞堕潪涓甯嗛庨‘锛屽畠涔熼溃涓存写鎴桡细绾跨▼瀹夊叏闂棰橀渶瑕佸阀濡椤湴浣跨敤阌佹満鍒讹纴搴忓垪鍖栨椂鍙鑳戒骇鐢熷氢釜瀹炰緥锛岃繖镞秗eadResolve()鏂规硶灏辨淳涓婄敤鍦轰简锛涘弽灏勫彲鑳藉艰嚧绉佹湁鏋勯犲嚱鏁拌缁曡繃锛岃繖镞舵垜浠闇鎶涘嚭寮傚父浠ョず璀﹀憡銆
缁撹锛氩崟渚嬫ā寮忔槸鎺у埗瀵硅薄鐢熷懡锻ㄦ湡鍜屽疄鐜板叡浜璧勬簮镄勫叧阌銆傚湪阃夋嫨鍝绉嶅疄鐜版柟寮忔椂锛屽姟蹇呮潈琛$嚎绋嫔畨鍏ㄣ佸簭鍒楀寲鍜屽弽灏勭殑钥冮噺锛屼互阆垮厤浠g爜澶嶆潅镐у崌绾у拰镐ц兘镄勯殣镐ф崯钥椼傚彧链夊湪鎭板綋镄勬椂链猴纴瀹冩墠鑳芥垚涓轰唬镰佽捐′腑镄勫缑锷涘姪镓嬨
⑶ Java单例模式饿汉式会有线程安全问题吗
1、答案:不会有线程安全问题。
2、首先,一个类可以被使用必须经过 加载、连接和初始化
3、饿汉模式的对象创建是在初始化的时候创建的,初始化操作是jvm执行的(会给类变量赋初始值,执行静态代码块等,类变量是用static修饰的变量),并且在我们看来一个类的初始化只会执行一次(jvm会控制),是不会有线程安全问题出现的
3、纠错:不是“类一加载就实例化”,而是类先加载、连接(此步骤执行时间不固定,但是在初始化执行前必须执行结束)。初始化执行的时机是你new了一个对象,或者使用了反射机制,或者调用类的静态变量和方法或者启动有main方法的类